【发布时间】:2019-01-10 10:06:09
【问题描述】:
我想将表记录从 Access 数据库插入 MySQL 远程服务器。
我的方法是:
- 使用循环在 TextBox 中从第一条到最后一条记录加载 Access 数据库
- 检查记录是否已经插入MySQL远程数据库
- 如果没有,就一个一个插入
代码产生错误信息:
值不能为空参数模式:数据源
我的代码在这里:
SQLda = New MySqlDataAdapter(("INSERT INTO approved (word, approveds) Select * FROM (SELECT '" & TextBox3.Text & "', 'No') AS tmp WHERE Not EXISTS (SELECT word FROM approved WHERE word= '" & TextBox3.Text & "') LIMIT 1"), MysqlConn)
MysqlConn = New MySqlConnection
ListBox1.Items.Clear()
MysqlConn.ConnectionString = "server=localhost;userid=root;password=;port=3306;database=sindhila_spellchecker;Character Set=utf8;SslMode=none;"
SQLda = New MySqlDataAdapter(("SELECT * FROM approved"), MysqlConn)
SQLda.Fill(dbds, "doctors")
DataGridView1.DataSource = dbds.Tables("doctors")
Try
MysqlConn.Open()
MessageBox.Show("Connection Successful, click ok to continue")
Label3.Visible = True
romantranssql = "Select * from approved order by id"
pth = My.Application.Info.DirectoryPath
romantransconn.ConnectionString = "Provider=Microsoft.ace.oledb.12.0; Data Source=" & pth & "\database.mdb; User Id=admin; Password=;"
romantransda = New OleDbDataAdapter(romantranssql, romantransconn)
romantransds = New DataSet
romantransda.Fill(romantransds, "DisplayCenterData")
romantransdt = romantransds.Tables("DisplayCenterData")
romantranscmb = New OleDbCommandBuilder(romantransda)
Do Until Me.BindingContext(romantransdt).Position = Me.BindingContext(romantransdt).Count - 1
TextBox3.DataBindings.Clear()
TextBox3.DataBindings.Add("text", romantransdt, "word")
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server=localhost;userid=root;password=;port=3306;database=sindhila_spellchecker;Character Set=utf8;"
SQLda = New MySqlDataAdapter(("INSERT INTO approved (word, approveds) Select * FROM (SELECT '" & TextBox3.Text & "', 'No') AS tmp WHERE Not EXISTS (SELECT word FROM approved WHERE word= '" & TextBox3.Text & "') LIMIT 1"), MysqlConn)
SQLda.Fill(dbds, "approved")
DataGridView1.DataSource = dbds.Tables("approved")
romantransdtx = dbds.Tables("approved")
Me.BindingContext(romantransdtx).Position = 0
Me.BindingContext(romantransdt).Position = Me.BindingContext(romantransdt).Position + 1
Me.Refresh()
Loop
MsgBox("all New records have been uploded To server")
Label3.Visible = False
MysqlConn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
MysqlConn.Dispose()
End Try
【问题讨论】:
-
我认为,您的 Access-table 允许 NULL 值,但您的 MySQL-table 不允许。
-
SQLda = New MySqlDataAdapter(("INSERT INTO approved (id, word, approveds) Select * FROM (SELECT +1, '" & TextBox3.Text & "', 'No') AS tmp WHERE Not EXISTS (SELECT word FROM approved WHERE word= '" & TextBox3.Text & "') LIMIT 1"), MysqlConn) .......在插入自动增量编号的地方我放了+1或NULL或默认值或 0 但它们都没有工作相同的错误消息显示“值不能为 nul”你能建议查询吗?
标签: mysql vb.net ms-access server