Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / update OleDbDataAdapter необходимо объявить скалярную переменную / 9 сообщений из 9, страница 1 из 1
26.08.2016, 09:49
    #39298398
vova_ukr_lg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
Здравствуйте. Повторял примеры из учебника и возникли вопросы.

Есть таблица в ms sql server
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE [dbo].[users](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[Name] [varchar](50) NOT NULL,
	[locked] [bit] NOT NULL,
 CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED 



из нее данные выводятся в datagridview через OleDbDataAdapter с отсоединением от базы. Потом делается сохранение изменений.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
    //создаем соединение conection
            connectDB();

            OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from users",connection);

 //настраиваем команду сохранения изменений (этот вариант не работает.)
    //      /*
            adapter.UpdateCommand = new OleDbCommand(               
                "update users set "+
                "name = @name, locked = @locked" +
                    " where id =@id ");
    //   */


            
            //настраиваем команду сохранения изменений (этот вариант из учебника работает)
            
            /*
            adapter.UpdateCommand = new OleDbCommand("update users set " +
                                                       "name = ?, locked = ?" +
                                                            " where id =?");
            // */
            adapter.UpdateCommand.Parameters.Add("@name",OleDbType.VarChar,50,"name");
            adapter.UpdateCommand.Parameters.Add("@locked", OleDbType.Boolean,10, "locked");
            
            adapter.UpdateCommand.Parameters.Add("@id", OleDbType.Integer, 20, "id");

            adapter.UpdateCommand.Connection = connection;

            //сохраняем изменения  
            adapter.Update(dataset.Tables[0]);



в учебном примере параметры в команду update передаются через "?", так все проходит нормально. Я попробовал заменить параметры на именованные переменные, но выводится ошибка " Необходимо объявить скалярную переменную "@name"."
Похоже это ошибка от ms sql. Как надо оформлять команду чтоб параметры можно было передавать по имени, а не подгонять по позиции?
...
Рейтинг: 0 / 0
26.08.2016, 09:56
    #39298406
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
В OleDB нет именованных параметров.
...
Рейтинг: 0 / 0
26.08.2016, 10:34
    #39298431
vova_ukr_lg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
fortibransaВ OleDB нет именованных параметров.

при использовании OleDbDataAdapter параметры можно передавать только через "?", других способов нет?
...
Рейтинг: 0 / 0
26.08.2016, 10:45
    #39298437
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
vova_ukr_lgfortibransaВ OleDB нет именованных параметров.

при использовании OleDbDataAdapter параметры можно передавать только через "?", других способов нет?Да.
...
Рейтинг: 0 / 0
26.08.2016, 11:03
    #39298452
vova_ukr_lg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
fortibransaДа.

Спасибо.
...
Рейтинг: 0 / 0
26.08.2016, 11:08
    #39298457
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
vova_ukr_lgfortibransaВ OleDB нет именованных параметров.

при использовании OleDbDataAdapter параметры можно передавать только через "?", других способов нет?
Провайдер сменить .
накой oledb для mssql?
...
Рейтинг: 0 / 0
26.08.2016, 11:12
    #39298459
vova_ukr_lg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
Изопропилvova_ukr_lgпропущено...


при использовании OleDbDataAdapter параметры можно передавать только через "?", других способов нет?
Провайдер сменить .
накой oledb для mssql?

это учебный пример, я делаю примеры из учебников, видеоуроков и пробую менять. а для чего лучше использовать oledb или его вообще лучше не использовать?
...
Рейтинг: 0 / 0
26.08.2016, 11:16
    #39298464
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
vova_ukr_lgИзопропилпропущено...

Провайдер сменить .
накой oledb для mssql?

это учебный пример, я делаю примеры из учебников, видеоуроков и пробую менять. а для чего лучше использовать oledb или его вообще лучше не использовать?Когда есть нужный провайдер, тогда используют его, если его нет то можно и OleDB тянуть.
...
Рейтинг: 0 / 0
26.08.2016, 11:19
    #39298466
vova_ukr_lg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update OleDbDataAdapter необходимо объявить скалярную переменную
fortibransa,

Понятно
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / update OleDbDataAdapter необходимо объявить скалярную переменную / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]