2013-04-26 82 views
0

当我试图更新使用OleDbConnection MS Access数据库(.mdb文件),我得到这个错误更新MS Access数据库:在下面的代码使用OLEDB连接

Microsoft JET Database Engine

at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
at CostEstimate.Form1.processdbBtn_Click(Object sender, EventArgs e) in C:\Users\sy\Visual Studio 2008\Projects\demo\demo\Form1.cs :line 137

137线是指command.ExecuteNonQuery();

请在下面找到的代码,并帮我找出这个问题

OleDbConnection conn = new OleDbConnection(); 
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"data source=C:\Users\sy\Visual Studio 2008\Projects\demo\demo\CE_Database.mdb;"; 

    conn.Open(); 

    OleDbCommand command = new OleDbCommand(); 
    string[][] allData = [[1,'a'],[2,'b'],[3,'c']] 

    foreach (string[] individualData in allData) 
    { 
    command.CommandText = @"insert into CETable(JobCode,JobName) Values(individualData[0],individualData[1])"; 
    command.Connection = conn; 
    command.ExecuteNonQuery(); 
    } 

    conn.Close(); 
+0

JET是否支持传入的OLE-DB? – 2013-04-26 04:09:22

回答

0

试试这个:

OleDbConnection conn = new OleDbConnection(); 
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"data source=C:\Users\sy\Visual Studio 2008\Projects\demo\demo\CE_Database.mdb;"; 
conn.Open(); 
string[][] allData = [[1,'a'],[2,'b'],[3,'c']] 

foreach (string[] individualData in allData) 
{ 
    OleDbCommand command = new OleDbCommand() 
    { 
     Connection = conn, 
     CommandText = string.Format(@"insert into CETable(JobCode,JobName) Values({0}, {1});", individualData[0], individualData[1])"; 
    }; 
    command.ExecuteNonQuery(); 
} 
conn.Close(); 

但我还建议您通过参数设置每个字段值。这是一个更好的做法,以确保没有注射

+0

遇到同样的错误 – Coolenough 2013-04-26 04:28:16