C# INSERT INTO语句OLEDBCOMAND中的语法错误
我在尝试将数据表中的行插入Excel工作表时遇到问题。我一直收到语法错误,但当我将sql字符串插入mssql server时,验证sql语句没有问题 这是我的代码:C# INSERT INTO语句OLEDBCOMAND中的语法错误,c#,.net,oledb,oledbconnection,oledbcommand,C#,.net,Oledb,Oledbconnection,Oledbcommand,我在尝试将数据表中的行插入Excel工作表时遇到问题。我一直收到语法错误,但当我将sql字符串插入mssql server时,验证sql语句没有问题 这是我的代码: public void InsertData(DataTable kpiData) { string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\KPIReports\"; string file
public void InsertData(DataTable kpiData)
{
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\KPIReports\";
string fileName = @"\Return_Report - " + DateTime.Today.ToShortDateString() + ".xlsx";
string[] files = Directory.GetFiles(folderPath);
foreach (string file in files)
{
File.Delete(file);
}
File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\ReportTemp.xlsx", folderPath + fileName);
System.Data.OleDb.OleDbConnection connection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
connection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + folderPath + fileName + ";Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=YES;\"");
connection.Open();
myCommand.Connection = connection;
foreach (DataRow row in kpiData.Rows)
{
string weight = row[11].ToString().Replace(',', '.');
sql = "Insert into [Data$] (WeekNr, AccountNumber, Barcode, Barcode2, PickupDate, DeliveryCustID, DeliveryAlias, PickupCustID, PickupAlias, DeliveryAttentionName, Coli, Weight, Note, DeliveryType, " +
"Name, Street, HouseNo, Postal, City, DanxCode, Receiver, PODTime, OnTime, [Service]) Values('" + row[0].ToString() + "','" + row[1].ToString() + "','" + row[2].ToString() + "','" + row[3].ToString() + "','" + row[4].ToString() + "','"
+ row[5].ToString() + "','" + row[6].ToString() + "','" + row[7].ToString() + "','" + row[8].ToString() + "','" + row[9].ToString() + "','" + row[10].ToString() + "','" + weight + "','" + row[12].ToString() + "','" + row[13].ToString() + "','"
+ row[14].ToString() + "','" + row[15].ToString() + "','" + row[16].ToString() + "','" + row[17].ToString() + "','" + row[18].ToString() + "','" + row[19].ToString() + "','" + row[20].ToString() + "','" + row[21].ToString() + "','" + row[22].ToString() + "','" + row[23].ToString() + "')";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
}
myCommand.Dispose();
connection.Close();
releaseObject(myCommand);
releaseObject(connection);
}
这是sql字符串:
Insert into [Data$] (WeekNr, AccountNumber, Barcode, Barcode2, PickupDate, DeliveryCustID, DeliveryAlias, PickupCustID, PickupAlias, DeliveryAttentionName, Coli, Weight, Note, DeliveryType, Name, Street, HouseNo, Postal, City, DanxCode, Receiver, PODTime, OnTime, [Service]) Values('20','44730629311','12626707007','0681739685','10-05-2014 15:22:13','xxxxx','xxxx','xxxxx','Asker','','1','0.2','','N','xxx','xxxx','111','0665','xxx','xxx','xxxx','13-05-2014 07:00:00','OT','Reverse')
我似乎找不到问题。我希望有人能帮我
提前谢谢。我发现了问题所在
问题是我没有把Note列放在括号里。因为Note是一个保留字,所以它周围必须有括号,如:[Note]您使用的是Excel连接字符串,这意味着您试图在Excel电子表格上执行T-SQL语句。语法是不同的,因此使用SQL Server或MySQL的语句可能无法使用Excel。在任何情况下,使用SSIS导出Excel文件比在代码中导出要容易得多。最有可能产生错误,因为您将所有值作为字符串传递。。。尝试只插入一列,看看是否仍有错误。。