powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / C# - adapter.Update(...)
4 сообщений из 4, страница 1 из 1
C# - adapter.Update(...)
    #36630278
Rivares
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста.
Пытаюсь изменять данные в DataSet
автор MGrid.AutoGenerateColumns = true;
BindingSource bs = new BindingSource();
bs.DataSource = logistic_DBDataSet.Tables[3];
MGrid.DataSource = bs;

OleDbDataAdapter ad = new OleDbDataAdapter();
ad = new OleDbDataAdapter("SELECT * FROM Products", connection);

ad.UpdateCommand = new OleDbCommand
("UPDATE Products SET Name = ?, Man = ?, Country = ?, Price = ?, Quantity = ?, Weight = ?"
+ "WHERE ID = ?");

ad.UpdateCommand.Parameters.Add("Name", OleDbType.VarChar, 50, "Name");
ad.UpdateCommand.Parameters.Add("Man", OleDbType.VarChar, 50, "Man");
ad.UpdateCommand.Parameters.Add("Country", OleDbType.VarChar, 50, "Country");
ad.UpdateCommand.Parameters.Add("Price", OleDbType.Double, 10, "Price");
ad.UpdateCommand.Parameters.Add("Quantity", OleDbType.Decimal, 18, "Quantity");
ad.UpdateCommand.Parameters.Add("Weight", OleDbType.Double, 10, "Weight");
ad.UpdateCommand.Parameters.Add("ID", OleDbType.Integer, 10, "ID");
ad.UpdateCommand.Connection = connection;
ad.Update(logistic_DBDataSet.Tables[3]);
VS подсвечивает последнюю строку, пишет Must declare the scalar variable "@P6WHERE" . Никак не пойму, в чем дело.
...
Рейтинг: 0 / 0
C# - adapter.Update(...)
    #36630365
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivares, нет пробела между Weight и Where, правельный запрос выглядит так:
Код: plaintext
1.
UPDATE Products SET Name = ?, Man = ?, Country = ?, Price = ?, Quantity = ?, Weight = ?"
+ " WHERE ID = ?

А еще правельней будет создать хранимую процедуру на сервере и дергать ее передавая ей параметры а не использывать запросы которые подвержены Sql иньекциям
...
Рейтинг: 0 / 0
C# - adapter.Update(...)
    #36630366
Rivares
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что у меня описаны сразу добавление\удаление\изменение строки. Так вот, не работает именно обновление. Остальное - в порядке.
Про пробелы - да, действительно, не обратил на это внимания, спасибо. Но после того, как исправил VS все равно подсвечивает ту же строку=) Пишет Incorrect syntax near ')' .
И только после попытки изменения данных в строке. Видимо, что-то еще не так с запросом? Но на всякий случай, вот полный код:

автор ProdGrid.AutoGenerateColumns = true;
BindingSource bs = new BindingSource();
bs.DataSource = logistic_DBDataSet.Tables[3];
ProdGrid.DataSource = bs;

OleDbDataAdapter ad = new OleDbDataAdapter();
ad = new OleDbDataAdapter("SELECT * FROM Products", connection);

ad.UpdateCommand = new OleDbCommand("UPDATE Products SET NAME = ?, Man = ?, Country = ?, Price = ?, Quantity = ?, Weight = ?) " +
"WHERE ID = ?");
ad.UpdateCommand.Parameters.Add("ID", OleDbType.Integer, 10, "ID");
ad.UpdateCommand.Parameters.Add("Name", OleDbType.VarChar, 50, "Name");
ad.UpdateCommand.Parameters.Add("Man", OleDbType.VarChar, 50, "Man");
ad.UpdateCommand.Parameters.Add("Country", OleDbType.VarChar, 50, "Country");
ad.UpdateCommand.Parameters.Add("Price", OleDbType.Double, 10, "Price");
ad.UpdateCommand.Parameters.Add("Quantity", OleDbType.Decimal, 18, "Quantity");
ad.UpdateCommand.Parameters.Add("Weight", OleDbType.Double, 10, "Weight");
ad.UpdateCommand.Connection = connection;

ad.InsertCommand = new OleDbCommand("INSERT INTO Products (ID, Name, Man, Country, Price, Quantity, Weight) " +
"VALUES (?, ?, ?, ?, ?, ?, ?)");
ad.InsertCommand.Parameters.Add("ID", OleDbType.Integer, 10, "ID");
ad.InsertCommand.Parameters.Add("Name", OleDbType.VarChar, 50, "Name");
ad.InsertCommand.Parameters.Add("Man", OleDbType.VarChar, 50, "Man");
ad.InsertCommand.Parameters.Add("Country", OleDbType.VarChar, 50, "Country");
ad.InsertCommand.Parameters.Add("Price", OleDbType.Double, 10, "Price");
ad.InsertCommand.Parameters.Add("Quantity", OleDbType.Decimal, 18, "Quantity");
ad.InsertCommand.Parameters.Add("Weight", OleDbType.Double, 10, "Weight");
ad.InsertCommand.Connection = connection;

ad.DeleteCommand = new OleDbCommand("DELETE FROM Products WHERE ID = ?");
ad.DeleteCommand.Parameters.Add("ID", OleDbType.Integer, 10, "ID");
ad.DeleteCommand.Connection = connection;
ad.Update(logistic_DBDataSet.Tables[3]);
connection.Close();
...
Рейтинг: 0 / 0
C# - adapter.Update(...)
    #36630367
Rivares
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, всё, проблему решил. Это всё рассеянность в 5 утра)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / C# - adapter.Update(...)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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