Reputation: 533
When I was trying to update an MS Access database (.mdb
file) using OleDbConnection
, I got this error:
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
Line 137 refers to command.ExecuteNonQuery();
in the below code
Please find the code below and help me in figuring out the problem
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();
Upvotes: 0
Views: 3538
Reputation: 1640
Try this:
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();
But I'll also suggest that you set each field value through a parameter. This is a better practice to assure of not having injections
Upvotes: 0