【发布时间】:2020-02-21 01:42:24
【问题描述】:
我想从 MySQL 导出数据库并将其导入 Ms. Access (MDB) 数据库。我尝试编写一个长 LoC 来处理将数据库导入 DataTable 变量并将值存储到其中。
这是我从 MySQL 上的 adm_users 数据库中获取价值的代码
a_query = "SELECT * FROM adm_users where uac_code='4' or uac_code='4A' or uac_code='1'"
a_da = New MySqlDataAdapter(a_query, db_conn)
a_da.Fill(a_ds, "adm_users")
a_dt = a_ds.Tables("adm_users")
然后我想使用此代码将 a_dt 值存储到 MDB 数据库中
For x = 0 To a_dt.Rows.Count - 1
b_query = "INSERT INTO user_login
(userid, username, password, uac) VALUES
('" + a_dt.Rows(x).Item("userid") + "', '" + a_dt.Rows(x).Item("username") + "', '" + a_dt.Rows(x).Item("userpwd") + "', '2')"
b_sql = New OleDbCommand(b_query, ms_conn)
b_sql.ExecuteReader()
Next
然后尝试查找存储在b_query中的字符串查询,看起来像这样
INSERT INTO user_login
(userid, username, password, uac) VALUES
('admin', 'Varenicou', 'administrator', '2')
然后返回值为:“INSERT INTO 语句中的语法错误” 我发现查询没有问题,所以我将 b_query 变量替换为“SELECT FROM user_login”之类的简单查询,返回值为:“SELECT * FROM 语句中的语法错误”
也许我太笨了,不能问这个问题,但我认为 VB.NET 认为我已经打开了与 MySQL 数据库的连接,并且必须始终在 MySQL 数据库上。因此,当我打开与 Access 女士的数据库连接时,它会返回类似的值,并且 VB.NET 与“您想使用哪个数据库?”混淆
我有什么想法来完成这项任务吗?我已经向我的朋友询问了一些建议,他说我需要与班级合作,我也有另一个想法与另一个新项目合作,该项目通过首先将 MySQL 数据库导出为 CSV 来完成输入 Access 女士数据库的任务。
【问题讨论】:
-
看看参数化你的插入语句,这样的字符串连接总是让人头疼。还要检查您插入的值。您可能会在其中找到特殊字符。错误放置的 ' 可能是导致您的问题的原因
-
我已尝试将这些查询用于 Access 女士的查询设计。而且效果很好,我得到了我想要的价值。
-
但是你从 MySQL 中得到的数据呢,里面有什么特殊字符吗?是否有任何数据被插入到您的 mdb 中,或者错误是否发生在第一次循环迭代中?
-
上面没有任何特殊字符,我在值中添加了 ' ',因为它是“varchar”数据类型。
标签: vb.net