好的,我有一个名为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
其他详情:
如果您需要任何其他详细信息,请告诉我,因为我现在无法想到您需要提供任何帮助的任何其他信息:P
谢谢!
答案 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_id
和message_id
以及creator
一起唯一标识一行...并相应地更新timestamp
和status
列...