Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 2 / 1
Регистрация: 22.06.2012
Сообщений: 244

Как правильно создать объект Command при помощи мастера с параметрами

24.12.2012, 15:04. Показов 1656. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Делаю программу демонстрирующую объекты Command с использованием именованных параметров на примере простой авторизации.

И столкнулся с такой проблемой. Если я делаю все вручную, то есть прописываю напрямую
C#
1
2
Command.Parameters["ИмяПользователя"].Value = TextBox.Text;
Command.Parameters["Пароль"].Value = TextBox2.Text;
То есть функционирует нормально. Но не получается сделать тоже самое с объектом Command созданным при помощи мастера.

По идее, все делаю тоже самое, но заполняю параметры с помощью среды. То есть открыв коллекцию параметров, нужному в поле Value пишу так же "TextBox.Text".
Но ничего не получается, то одна то другая ошибка.

Не могу понять в чем дело.

Вопросы:
1. Как правильно создать объект Command при помощи мастера с параметрами?
2. Что значит знак вопроса в условиях выборки? Вроде как это говорит о запросе параметра для системы. Заметил, что если проставить вопросы в условиях, тогда параметры сгенерятся автоматом.
3. Заметил, что при автоматической генерации параметров их имена не начинаются со знака @, в то время как в книгах всегда при именовании параметров этот знак используют. Какой в нем смысл помимо наглядности? Просто традиция?

Файл с проектом
Authorization.rar
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2012, 15:04
Ответы с готовыми решениями:

Как создать объект из префаба с начальными параметрами?
Добрый вечер. Вопрос по Unity3D. При создании объекта (префаб) как проще сразу занести в скрипт некоторые поля, что-то наподобие...

Как создать объект класса с двумя параметрами?
#include <iostream> using namespace std; class rational{ public: rational(int numerator = 0, int denominator =...

Создание входной формы при помощи Мастера
создание входной формы с помощью мастера форм.

5
2 / 2 / 1
Регистрация: 22.06.2012
Сообщений: 244
24.12.2012, 16:50  [ТС]
Собственно, понял в чем дело. Дело в том, что значение передается в формате стринг. Там хоть упишись.
Есть ли способы обхода? Хочется передавать значение наиболее наглядно, а не так как я сделал в виде прямого обращения к коллекции параметров.
0
17 / 17 / 3
Регистрация: 09.12.2011
Сообщений: 64
25.12.2012, 14:14
Можно встречный вопрос: вы в поле значение так и писали "TextBox.Text"? Если да, то конечно работать не будет, ведь в таком случае сравниваться будет не со строкой, которую вы ввели в TextBox, а прямо с "TextBox.Text". Обойти это ограничение нельзя, ведь указав в поле "Значение"(у вас Value, просто у меня русская версия), задатся фиксированное значение, измениить которое можно лишь так:
C#
1
2
MyAuthoCommand.Parameters["ИмяПользователя"].Value = TextBox.Text;
MyAuthoCommand.Parameters["Пароль"].Value = TextBox2.Text;
Единственная польза от мастера запросов, в том что не нужно, писать SQL прямо в коде.
А насчёт @ - это знак который ставится перед словом которое является параметром.
C#
1
2
string sql = "SELECT id FROM Worker \n" +
             "WHERE Worker.FIO = @pfio"; //pfio параметр
Добавлено через 2 часа 32 минуты
Хм, я вот что заметил, у вас OleDbCommand, а в ole параметр кажется обозначаются через двоеточие ":Имя_параметра" а @ для SqlCommand.
1
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
25.12.2012, 17:49
Цитата Сообщение от Void-87 Посмотреть сообщение
Заметил, что при автоматической генерации параметров их имена не начинаются со знака @
Все параметры в языке запросов SQL начинаются со знака @. Если ваша команда будет соответствовать хранимой процедуре, то знак @ будет во всех параметрах присутствовать обязательно, так как вам прийдется передать в храниую процедуру параметры в том виде, как они созданы в СУБД перед тем, как ее вызывать. Если же ваша команда является запросом, то имена параметров вашей команды на сервере никак фигурировать не будет, поэтому в данном случае знак @ писать не обязательно. Мастер C# называет параметры в таком случае так же, как называются соответствующие столбцы в таблице, а имена столбцов пишутся без знака @.
1
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
25.12.2012, 17:57
Цитата Сообщение от Void-87 Посмотреть сообщение
Дело в том, что значение передается в формате стринг.
Convert.ToInt32 и подобные функции никто не отменял.
0
2 / 2 / 1
Регистрация: 22.06.2012
Сообщений: 244
26.12.2012, 11:42  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение
Все параметры в языке запросов SQL начинаются со знака @. Если ваша команда будет соответствовать хранимой процедуре, то знак @ будет во всех параметрах присутствовать обязательно, так как вам прийдется передать в храниую процедуру параметры в том виде, как они созданы в СУБД перед тем, как ее вызывать. Если же ваша команда является запросом, то имена параметров вашей команды на сервере никак фигурировать не будет, поэтому в данном случае знак @ писать не обязательно. Мастер C# называет параметры в таком случае так же, как называются соответствующие столбцы в таблице, а имена столбцов пишутся без знака @.
Спасибо за понятный и исчерпывающий ответ =)

Добавлено через 41 секунду
Цитата Сообщение от Learx Посмотреть сообщение
Convert.ToInt32 и подобные функции никто не отменял.
Как конкретно вы предлагаете это использовать? Можете продемонстрировать синтаксис? Не совсем понял

Добавлено через 3 минуты
Цитата Сообщение от Байр Посмотреть сообщение
Хм, я вот что заметил, у вас OleDbCommand, а в ole параметр кажется обозначаются через двоеточие ":Имя_параметра" а @ для SqlCommand.
Неоднократно видел, как авторы используют этот знак и для Sql и для OleDb

Добавлено через 13 минут
Дополнительный вопрос. А query editor можно вызвать как-то помимо клика на знак "..." в панели свойств
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2012, 11:42
Помогаю со студенческими работами здесь

Как правильно создать поток с двумя параметрами
Проблема в том что как правильно мне создать поток. using System; using System.Collections.Generic; using System.ComponentModel; ...

Как правильно создать объект?
макрос для экселя: Set folder = ffffff.getfolder("e:\temp") Dim ListOfNeededBooks As New Collection i = 1 For Each Item In...

Как правильно создать объект сокета?
QTcpSocket* socket=new QTcpSocket(); На эту строчку ругается компилятор так: error C2512: 'QTcpSocket' : no appropriate default...

Как правильно порулить аналоговым девайсом при помощи МК?
Привет! Скоро в руки попадет такой замечательный прибор - http://www.bendixking.som/Products/Flig ... ors/KI-202 Есть банальная...

Как правильно сделать SQL-запрос при помощи скрипта?
Как правильно сделать SQL-запрос при помощью скрипта, я ничего не понимаю. Есть udl файл, есть vbs скрипт, и бд созданная в акцессе. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru