【问题标题】:Inserting data into MS Access table using c#使用 c# 将数据插入 MS Access 表
【发布时间】:2016-11-01 12:05:08
【问题描述】:

谁能告诉我这段代码有什么问题?提前致谢。

myConnection.ConnectionString = myConnectionString;
myConnection.Open();
OdbcCommand command = myConnection.CreateCommand();
command.CommandText = 
     "INSERT INTO Table1(type, from, to, depart, arrival, remain) VALUES(?, ?, ?, ?, ?, ?)";

TimeSpan time = new TimeSpan(10, 7, 00);
DateTime t = new DateTime(2016, 5, 5, 5, 4, 3);
command.Parameters.AddWithValue("@type", "test");
command.Parameters.AddWithValue("@from", "tet");
command.Parameters.AddWithValue("@to", "te");
command.Parameters.AddWithValue("@depart", t);
command.Parameters.AddWithValue("@arrival", t);
command.Parameters.AddWithValue("@remain", 4);

command.ExecuteNonQuery();

【问题讨论】:

  • 您正在混合命名参数和位置参数。
  • 仍然出现同样的错误
  • 一般来说你的代码看起来没问题。那么它有什么问题呢?您是否遇到异常或某些意外结果?
  • 我收到此异常:错误 [42000] [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句中的语法错误。
  • 仍然出现同样的错误 - 那是什么错误?您不认为这可能是一条有用的信息吗?

标签: c# sql ms-access insert odbc


【解决方案1】:

您正在使用 Access reserved words typefrom 作为表中的列名。

这可能是您收到此类错误的原因。

您可以将这样的列名用方括号括起来,并将命令文本更改为:

INSERT INTO Table1([type], [from], to, depart, arrival, remain) VALUES(?, ?, ?, ?, ?, ?)

【讨论】:

  • @Wagner'P 如果回答对您有帮助 - 您可以将其标记为已接受。这可以为将来遇到此类问题的人提供可能的解决方案。详情请见stackoverflow.com/help/someone-answers
  • 我该怎么做?
  • @Wagner'P 好吧,我在之前评论中链接的文章中对此进行了描述:“要将答案标记为已接受,请单击答案旁边的复选标记以切换它从灰显到填满"
【解决方案2】:

这是网页应用插入功能的代码:

编码:

    string dataPath = Server.MapPath("Your DataPath");
    string ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dataPath + ";Persist Security Info=True";            
    OleDbConnection Con = new OleDbConnection(ConString);
    OleDbCommand Command = Con.CreateCommand();
    Con.Open();
    Command.CommandText = "Insert into Table1(type, from, to, depart, arrival, remain) Values (@type, @from, @to, @depart, @arrival, @remain);      
    TimeSpan time = new TimeSpan(10, 7, 00);
    DateTime t = new DateTime(2016, 5, 5, 5, 4, 3);
    command.Parameters.AddWithValue("@type", "test");
    command.Parameters.AddWithValue("@from", "tet");
    command.Parameters.AddWithValue("@to", "te");
    command.Parameters.AddWithValue("@depart", t);
    command.Parameters.AddWithValue("@arrival", t);
    command.Parameters.AddWithValue("@remain", 4);
    command.ExecuteNonQuery();
    Con.Close();

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多