#database #ms-access #datagridview #save #multiple-records
#База данных #ms-access #datagridview #Сохранить #несколько записей
Вопрос:
Я пытаюсь сохранить все свои данные в DataGridView в базу данных Access, но я получаю эту ошибку: Syntax error in INSERT INTO statement.
Мой код следует:
try
{
string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\MotoFix.mdb;";
OleDbCommand Com = new OleDbCommand();
for (int i = 0; i < gridViewProduct_Transac.Rows.Count - 1; i )
{
using (OleDbConnection Con = new OleDbConnection(ConnectionString))
{
string str;
Con.Open();
str = @"INSERT INTO Transaction(tranNo, custID, pID, userID, orderNo, sDate) VALUES ('" gridViewProduct_Transac.Rows[i].Cells["Transaction Number"].Value "', '" gridViewProduct_Transac.Rows[i].Cells["Customer ID"].Value "'," gridViewProduct_Transac.Rows[i].Cells["Referral ID"].Value ",'" gridViewProduct_Transac.Rows[i].Cells["Cashier ID"].Value "','" gridViewProduct_Transac.Rows[i].Cells["Order Number"].Value "','" gridViewProduct_Transac.Rows[i].Cells["Date"].Value "');";
using (Com = new OleDbCommand(str, Con))
{
Com.ExecuteNonQuery();
Con.Close();
}
}
}
}
Комментарии:
1.
TRANSACTION
является зарезервированным словом в Access SQL. ПопробуйтеINSERT INTO [Transaction] ...
.2. Я уже изменил ее, но столкнулся с этой ошибкой, для одного или нескольких обязательных параметров не задано значение.
Ответ №1:
Если sDate — это тип даты, вам может потребоваться ее форматирование — Format(«ГГГГ-мм-ДД», sDate) или Format(«ГГГГ-мм-ДД ЧЧ: ММ: сс», sDate)
Комментарии:
1. Что-то вроде: str = «ВСТАВИТЬ В значения транзакции (tranNo, CustID, pID, userId, OrderNo, sDate) (‘» gridViewProduct_Transac.Rows(I). Ячейки («Номер транзакции»). Значение «‘, ‘» gridViewProduct_Transac.Rows(I). Ячейки («Идентификатор клиента»). Значение «‘,» gridViewProduct_Transac.Rows(I). Ячейки («Идентификатор ссылки»). Значение «,'» gridViewProduct_Transac.Rows(I). Ячейки («Идентификатор кассира»). Значение «‘,'» gridViewProduct_Transac.Rows(I). Ячейки («Порядковый номер»). Значение «‘,'» Строки. Формат (gridViewProduct_Transac.Rows(I). Ячейки («Дата»). Значение, «ГГГГ-мм-ДД») «‘);»;
2. Я не обнаружил значения, заданного для одного или нескольких обязательных параметров. 🙁
3. Он сообщает вам, что вам не хватает значения для одного из ваших 6 параметров. Проверьте свои цитаты и ссылки и убедитесь, что все правильно. Подумайте о том, чтобы разбить его, чтобы его было легче читать. назначение коротких переменных для каждого элемента значения, т.е. создайте переменную TransNo и установите для нее значение gridViewProduct_Transac.Rows(I). Ячейки («Номер транзакции»). Значение Затем используйте переменную TransNo для построения sql