【问题标题】:Update MS Access database using Oledb connection使用 Oledb 连接更新 MS Access 数据库
【发布时间】:2013-04-20 03:55:05
【问题描述】:

当我尝试使用 OleDbConnection 更新 MS Access 数据库(.mdb 文件)时,出现此错误:

Microsoft JET 数据库引擎

在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象和执行结果)
在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,对象和执行结果)
在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 C:\Users\sy\Visual Studio 2008\Projects\demo\demo\Form1.cs 中的 CostEstimate.Form1.processdbBtn_Click(Object sender, EventArgs e) :第 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();

【问题讨论】:

  • JET 是否支持传入的 OLE-DB?

标签: c# c#-4.0 ms-access c#-3.0


【解决方案1】:

试试这个:

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();

但我也建议您通过参数设置每个字段值。这是确保不注射的更好做法

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多