【问题标题】:insert into ms access database插入 ms 访问数据库
【发布时间】:2013-03-25 15:03:03
【问题描述】:

我使用以下代码将记录从一个数据库插入到另一个数据库,但它不起作用。我在 MS-ACCESS 2007 中尝试了查询,它工作正常,但从我的 C# 代码以编程方式调用时它不起作用?

string query_insert = "INSERT INTO Questionnaires_Table(BranchName,Factor,Region,Branch_ID,Current_Date,No_Employees) "
+ "SELECT BranchName,Factor,Region,Branch_ID,Current_Date,No_Employees "
+ "FROM Questionnaires_Table IN '" + dialog.FileName + "' Where Branch_ID = " + textBox1.Text ;

dbConnDest.Open();

OleDbDataAdapter dAdapter = new OleDbDataAdapter();
OleDbCommand cmd_insert = new OleDbCommand(query_insert, dbConnDest);

dAdapter.InsertCommand = cmd_insert;

textBox2.Text = query_insert.ToString();

dbConnDest.Close();

当我在 ms 访问中获取query_insert 的内容时,它工作正常。

【问题讨论】:

  • 你得到什么异常?执行帐户是否有权访问外部数据库?
  • 究竟是什么不起作用?你有例外吗?
  • 警告您的代码容易受到 sql 注入攻击。
  • 我没有得到任何异常
  • 目标数据库什么也没发生

标签: c# ms-access


【解决方案1】:

我认为你需要使用

cmd_insert.executeNonQuery()

【讨论】:

  • 当我尝试这样做时,在 INSERT INTO 中出现语法错误异常
  • 这说明你的sql语法错误。在这种情况下,我会设置一些断点来确定 query_insert 的值并将其粘贴到您的 ms 访问数据库中以查看它是否有效
  • 我明白了,然后尝试使用 textbox2.Text = cmd_insert.executeScalar()
  • 和 HansUp 说的一样,你应该删除 SELECT 语句中的逗号
  • 错误 1 ​​无法将类型“对象”隐式转换为“字符串”。存在显式转换(您是否缺少演员表?)
【解决方案2】:

删除SELECT 列表中最后一个字段名称后面的逗号。

"SELECT BranchName,Factor,Region,Branch_ID,Current_Date,No_Employees"

【讨论】:

    【解决方案3】:

    dAdapter.Update(); 应该做的伎俩

    【讨论】:

    • 您创建了一个插入语句,但您没有执行它。可以在此处阅读示例:link 如果需要,可以省略 DataTable 相关代码。
    【解决方案4】:

    这似乎很可疑:

     " Where Branch_ID = " + textBox1.Text ;
    

    textBox1 是否包含数字 ID?输入的 ID 是否存在于源数据库中?

    我会 1) 检查 ID 是否存在,如果不存在则警告用户,2) 将查询更改为使用参数而不是连接 SQL。

    如果你的公司开了一个ID为

    的分公司会怎样
    "1; DROP TABLE Branches"
    

    【讨论】:

    • 我使用参数,但仍然遇到同样的问题
    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多