更新MySQL数据库的问题....帮助?

时间:2011-08-27 16:32:05

标签: mysql database vb.net sql-update

好的,我有一个名为in-out的Mysql dsetup,我编写了一个vb.net客户端程序,用于从数据库中的表中获取信息,将其显示在数据网格视图中,然后允许用户访问编辑此信息并在服务器上更新它。

现在我在我的Gateway笔记本电脑上托管服务器,并从同一台笔记本电脑连接到它,因此我使用localhost作为服务器名称。我的问题是,当我进入程序并更改信息并单击更新时,没有任何反应......信息保持不变,但没有错误,语法失败或程序崩溃的迹象。

我试过在我家里的另一台电脑上运行它,我得到了相同的结果。我可以毫不费力地访问信息,但更新它是我遇到麻烦的地方。如果我的代码出现问题,它会显示某种错误或要求我调试我的脚本,这会使它更容易解决,因此我确信它与我的数据库有关。

在我开始这一步之前,我在检索类似

之类的信息时遇到了错误
  

PRIMARY KEY ='0'的重复默认输入

这意味着表中与此错误相关的列不能有多个默认值'0',但现在已经消失了......(即使我没有改变任何内容)

这是将重新创建数据库布局的脚本。只需在MySql WorkBench或MySql查询浏览器中运行它(或者您用来管理Sql数据库的任何东西)。请告诉我我做错了什么因为我需要在12月之前完成这个程序! (从现在起4个月)

http://www.megaupload.com/?d=VA639MP5

这是我的更新代码:(以防问题出在我的程序而不是数据库中)

Private Sub cmdupdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdupdate.Click
   Dim conn As New MySqlConnection
    Dim myCommand As New MySqlCommand

    '#######
    conn.ConnectionString = "server=" & frmLogin.txtserver.Text & ";" _
& "user id=" & frmLogin.txtusername.Text & ";" _
& "password=" & frmLogin.txtpassword.Text & ";" _
& "database=in_out"
    '#######

    myCommand.Connection = conn
    myCommand.CommandText = "INSERT INTO event(user_id, message_id, timestamp, status, creator)" _
     & "VALUES(?UserID, ?MessageID, NOW(), ?Status, ?Creator)"

    myCommand.Parameters.AddWithValue("?UserID", myUserID)
    myCommand.Parameters.AddWithValue("?MessageID", cbomessage.SelectedValue)
    myCommand.Parameters.AddWithValue("?Status", cbostatus.SelectedItem)
    myCommand.Parameters.AddWithValue("?Creator", myUserID)

    Try
        conn.Open()
        myCommand.ExecuteNonQuery()
    Catch myerror As MySqlException
        MsgBox("There was an error updating the database: " & myerror.Message)
    End Try
    refreshStatus(dgvstatus)

End Sub

其他详情:

  • 操作系统:Windows 7 Professional x64
  • 软件:Visual Basic 2010 Express
  • 服务器名称:'Localhost'
  • Sql Manager:MySql Workbench 5.2.34 CE

如果您需要任何其他详细信息,请告诉我,因为我现在无法想到您需要提供任何帮助的任何其他信息:P

谢谢!

1 个答案:

答案 0 :(得分:1)

似乎你发生了某种交易问题......

尝试在myCommand.Connection.Close();

之后添加ExecuteNonQuery()

编辑 - 根据评论:

学习SQL的一些链接:

编辑2:

UPDATE event SET
timestamp = NOW(), 
status = ?Status 
WHERE user_id = ?UserID AND message_id = ?MessageID AND creator = ?Creator;

由于没有足够的有关数据模型的详细信息,上述UPDATE语句假定列user_idmessage_id以及creator一起唯一标识一行...并相应地更新timestampstatus列...