
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.05.2010, 00:07
|
|||
|---|---|---|---|
|
|||
C# - adapter.Update(...) |
|||
|
#18+
Помогите пожалуйста. Пытаюсь изменять данные в 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" . Никак не пойму, в чем дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.05.2010, 04:08
|
|||
|---|---|---|---|
|
|||
C# - adapter.Update(...) |
|||
|
#18+
Rivares, нет пробела между Weight и Where, правельный запрос выглядит так: Код: plaintext 1. А еще правельней будет создать хранимую процедуру на сервере и дергать ее передавая ей параметры а не использывать запросы которые подвержены Sql иньекциям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.05.2010, 04:38
|
|||
|---|---|---|---|
|
|||
C# - adapter.Update(...) |
|||
|
#18+
Дело в том, что у меня описаны сразу добавление\удаление\изменение строки. Так вот, не работает именно обновление. Остальное - в порядке. Про пробелы - да, действительно, не обратил на это внимания, спасибо. Но после того, как исправил 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(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&mobile=1&tid=1351307]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
142ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 433ms |

| 0 / 0 |
