首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VB.NET数据库更新有关问题

2012-02-06 
VB.NET数据库更新问题为什么我的以下这段代码无法更新数据库中的数据?Dim connStr, updateCmd As Stringco

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啊

热点排行