VB.NET数据库更新问题
为什么我的以下这段代码无法更新数据库中的数据?
Dim connStr, updateCmd As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=电台列表.mdb"
Dim cmd As OleDbCommand, conn As OleDbConnection
conn = New OleDbConnection(connStr)
conn.Open()
updateCmd = "Update " & currentDatatableName & " Set A_Name = @电台名称,A_Style = @电台风格,A_Website = @电台网址,A_Url = @链接地址 Where A_Position = @地理位置"
cmd = New OleDbCommand(updateCmd, conn)
cmd.Parameters.Add(New OleDbParameter("@电台名称", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@地理位置", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@电台风格", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@电台网址", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@链接地址", OleDbType.Char))
cmd.Parameters("@电台名称").Value = newStation.nameTextBox.Text
cmd.Parameters("@地理位置").Value = newStation.positionTextBox.Text
cmd.Parameters("@电台风格").Value = newStation.styleComboBox.Text
cmd.Parameters("@电台网址").Value = newStation.websiteTextBox.Text
cmd.Parameters("@链接地址").Value = newStation.urlTextBox.Text
cmd.ExecuteNonQuery()
conn.Close()
[解决办法]
- Assembly code
普通方式(最常用)连接ACCESS数据库: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\你的数据库名.mdb; User Id=admin; Password=" 使用工作组方式(系统数据库)连接ACCESS数据库: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\你的数据库名.mdb; Jet OLEDB:System Database=c:\App1\你的系统数据库名.mdw" 连接到带有密码的ACCESS数据库: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\你的数据库名.mdb; Jet OLEDB:Database Password=你的密码" 连接到处于局域网主机上的ACCESS数据库: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\\Server_Name\Share_Name\Share_Path\你的数据库名.mdb" 连接到处于远程服务器上的ACCESS数据库: "Provider=MS Remote; Remote Server=http://远程服务器IP; Remote Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\你的数据库名.mdb"
[解决办法]
SQL SEVER2008的话,我记得 如果UPDATE 不存在的数据是不报错的
是不是测试数据搞错了....
Where A_Position = @地理位置
cmd.Parameters("@地理位置").Value = newStation.positionTextBox.Text
确认下这条记录是否存在...
[解决办法]
Dim connStr, updateCmd As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=电台列表.mdb"
Dim cmd As OleDbCommand, conn As OleDbConnection
conn = New OleDbConnection(connStr)
conn.Open()
updateCmd = "Update " & currentDatatableName & " Set A_Name = @电台名称,A_Style = @电台风格,A_Website = @电台网址,A_Url = @链接地址 Where A_Position = @地理位置"
cmd = New OleDbCommand(updateCmd, conn)
cmd.Parameters.Add(New OleDbParameter("@电台名称", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@地理位置", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@电台风格", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@电台网址", OleDbType.Char))
cmd.Parameters.Add(New OleDbParameter("@链接地址", OleDbType.Char))
cmd.Parameters("@电台名称").Value = newStation.nameTextBox.Text.trim
cmd.Parameters("@地理位置").Value = newStation.positionTextBox.Text.trim
cmd.Parameters("@电台风格").Value = newStation.styleComboBox.Text.trim
cmd.Parameters("@电台网址").Value = newStation.websiteTextBox.Text.trim
cmd.Parameters("@链接地址").Value = newStation.urlTextBox.Text.trim
cmd.ExecuteNonQuery()
conn.Close()
[解决办法]
在最后,吧updateCmd,用msgbox打印出来看一下,对不对不就是了
[解决办法]
顶楼上一下,把传好参拼好的SQL拿出来运行一下
[解决办法]
- VB.NET code
Dim connStr, updateCmd As String connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=电台列表.mdb" Dim cmd As OleDbCommand, conn As OleDbConnection conn = New OleDbConnection(connStr) Try conn.Open() updateCmd = "Update " & currentDatatableName & " Set A_Name = @电台名称,A_Style = @电台风格,A_Website = @电台网址,A_Url = @链接地址 Where A_Position = @地理位置" cmd = New OleDbCommand(updateCmd, conn) cmd.Parameters.Add(New OleDbParameter("@电台名称", OleDbType.Char)) cmd.Parameters.Add(New OleDbParameter("@地理位置", OleDbType.Char)) cmd.Parameters.Add(New OleDbParameter("@电台风格", OleDbType.Char)) cmd.Parameters.Add(New OleDbParameter("@电台网址", OleDbType.Char)) cmd.Parameters.Add(New OleDbParameter("@链接地址", OleDbType.Char)) cmd.Parameters("@电台名称").Value = Me.nameTextBox.Text.trim cmd.Parameters("@地理位置").Value = Me.positionTextBox.Text.trim cmd.Parameters("@电台风格").Value = Me.styleComboBox.Text.trim cmd.Parameters("@电台网址").Value = Me.websiteTextBox.Text.trim cmd.Parameters("@链接地址").Value = Me.urlTextBox.Text.trim cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message.ToString) End Try End Sub
[解决办法]
怀疑还是更新0条的问题
cmd.Parameters("@地理位置").Value = newStation.positionTextBox.Text
没trim,所以可能后面带空格看不出来
[解决办法]
楼主,你要学会debug啊