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

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

24.12.2012, 15:04. Показов 1663. Ответов 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
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru