+ -
当前位置:首页 → 问答吧 → VB.NET数据库更新问题

VB.NET数据库更新问题

时间:2011-12-07

来源:互联网

为什么我的以下这段代码无法更新数据库中的数据?

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()

作者: yzhangling   发布时间: 2011-12-07

Data Source=电台列表.mdb"
路径是否正确

作者: q107770540   发布时间: 2011-12-07

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"


作者: q107770540   发布时间: 2011-12-07

回复于:2011-12-07 11:13:39Data Source=电台列表.mdb"
路径是否正确 

我将数据表放到DEBUG中的,没问题,对该数据库中数据表数据的删除、查找、添加都实现了,就是更新数据时,程序并不报错,但是数据没有改变。

作者: yzhangling   发布时间: 2011-12-07

SQL SEVER2008的话,我记得 如果UPDATE 不存在的数据是不报错的
是不是测试数据搞错了....

Where A_Position = @地理位置
cmd.Parameters("@地理位置").Value = newStation.positionTextBox.Text

确认下这条记录是否存在...

作者: bearlin081001   发布时间: 2011-12-07

引用 4 楼 bearlin081001 的回复:
SQL SEVER2008的话,我记得 如果UPDATE 不存在的数据是不报错的
是不是测试数据搞错了....

Where A_Position = @地理位置
cmd.Parameters("@地理位置").Value = newStation.positionTextBox.Text

确认下这条记录是否存在...



我就是在当前这条记录上进行修改,这条记录数据库表里是有的。

作者: yzhangling   发布时间: 2011-12-07

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()

作者: eaqpi   发布时间: 2011-12-07

在最后,吧updateCmd,用msgbox打印出来看一下,对不对不就是了

作者: eaqpi   发布时间: 2011-12-07

顶楼上一下,把传好参拼好的SQL拿出来运行一下

作者: bearlin081001   发布时间: 2011-12-07

引用 7 楼 eaqpi 的回复:
在最后,吧updateCmd,用msgbox打印出来看一下,对不对不就是了



updateCmd打印出来后,参数传递是正确的,但是还是不能更新数据库!!!

作者: yzhangling   发布时间: 2011-12-07

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


看看报什么错误

作者: eaqpi   发布时间: 2011-12-07