2013-04-26 3 views
0

Когда я пытался обновить базу данных MS Access (.mdb файл) с помощью OleDbConnection, я получил эту ошибку:обновления базы данных 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? –

ответ

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

Смежные вопросы