插入 ms 访问数据库
Posted
技术标签:
【中文标题】插入 ms 访问数据库【英文标题】:insert into ms access database 【发布时间】: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 注入攻击。 我没有得到任何异常 目标数据库什么也没发生 【参考方案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"
【讨论】:
我使用参数,但仍然遇到同样的问题以上是关于插入 ms 访问数据库的主要内容,如果未能解决你的问题,请参考以下文章
记录未使用 javascript 正确插入到 ms 访问数据库中