2016-07-14 2 views
1

Может ли кто-нибудь помочь в этом вопросе, пожалуйста? Я пробовал так много разных вещей, и я все еще получаю эту ошибку. Ошибка указывает на строку cmd.ExecuteNonQuery(). Я проверил строку Insert миллион раз, и я не понимаю, в чем проблема. Благодаря!OleDbException (x80040E14): Синтаксическая ошибка в Вставить в оператор

OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + targetPath);       
try 
{ 
    for (int i = 0; i < listOfDBTables.Count; i++) 
    { 
     for (int j = 1; j < listOfDBTables[i].Rows.Count; j++) 
     //Don't include the header 
     { 
      OleDbCommand cmd = new OleDbCommand("INSERT INTO POP(Global Customer, Sold To #, Material #, Material Description, Customer ID, Customer Name, City, State, Country, Market Code, Unit Cost, Invoice Date, [Month], Quantity, UoM, KG, [Year]) Values (@globCust,@soldToNum,@matNum,@matDesc,@custID,@custName,@city,@state,@country,@mktCode,@cost,@invDate,@month,@quantity,@uom,@kg,@year)", myConnection); 

      cmd.Parameters.AddWithValue("@globCust", listOfDBTables[i].Rows[j][0].ToString()); 
      cmd.Parameters.AddWithValue("@soldToNum", listOfDBTables[i].Rows[j][1].ToString()); 
      cmd.Parameters.AddWithValue("@matNum", listOfDBTables[i].Rows[j][2].ToString()); 
      cmd.Parameters.AddWithValue("@matDesc", listOfDBTables[i].Rows[j][3].ToString()); 
      cmd.Parameters.AddWithValue("@custID", listOfDBTables[i].Rows[j][4].ToString()); 
      cmd.Parameters.AddWithValue("@custName", listOfDBTables[i].Rows[j][5].ToString()); 
      cmd.Parameters.AddWithValue("@city", listOfDBTables[i].Rows[j][6].ToString()); 
      cmd.Parameters.AddWithValue("@state", listOfDBTables[i].Rows[j][7].ToString()); 
      cmd.Parameters.AddWithValue("@country", listOfDBTables[i].Rows[j][8].ToString()); 
      cmd.Parameters.AddWithValue("@mktCode", listOfDBTables[i].Rows[j][9].ToString()); 
      cmd.Parameters.AddWithValue("@cost", listOfDBTables[i].Rows[j][10].ToString()); 
      cmd.Parameters.AddWithValue("@invDate", listOfDBTables[i].Rows[j][11].ToString()); 
      cmd.Parameters.AddWithValue("@month", listOfDBTables[i].Rows[j][12].ToString()); 
      cmd.Parameters.AddWithValue("@quantity", listOfDBTables[i].Rows[j][13].ToString()); 
      cmd.Parameters.AddWithValue("@uom", listOfDBTables[i].Rows[j][14].ToString()); 
      cmd.Parameters.AddWithValue("@kg", listOfDBTables[i].Rows[j][15].ToString()); 
      cmd.Parameters.AddWithValue("@year", listOfDBTables[i].Rows[j][16].ToString()); 

      myConnection.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
    } 
} 
catch(Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
finally 
{ 
    myConnection.Close(); 
} 
+1

Оберните ваши имена столбцов в [..]. ex: [Глобальный клиент] –

+2

Ваш провайдер может обрабатывать неименованные параметры (используя '?') – SLaks

+0

У меня все еще возникают некоторые ошибки, но я, кажется, добиваюсь прогресса. Обернуть все имена столбцов в скобках, возможно, сделали трюк. Я отправлю сообщение, если я это разрешу. Спасибо @MarcusH –

ответ

0

вы должны поместить столбцы в [], например сделать его [Продано Чтобы #] вместо Продан Для #