Vb.net 更新查询使数据库中的字段为空

Vb.net 更新查询使数据库中的字段为空,vb.net,winforms,datagridview,phpmyadmin,Vb.net,Winforms,Datagridview,Phpmyadmin,我以前问过一个关于使用phpMyAdmin更新datagridview中的数据的问题。您可以通过以下链接引用它--> 代码运行得很好,但现在的问题是,当我在localhost中检查更新的数据时,我看到的都是空字段。下面是我的vb设计的截图。我已经根据我的数据库标记了文本框。在运行我的winform时,屏幕截图中的文本框被设置为不可见 到底是什么问题 @卡卡洛特 这是我最初拥有的 MysqlConn=新的MySqlConnection MysqlConn.ConnectionString=“se

我以前问过一个关于使用phpMyAdmin更新datagridview中的数据的问题。您可以通过以下链接引用它-->

代码运行得很好,但现在的问题是,当我在localhost中检查更新的数据时,我看到的都是空字段。下面是我的vb设计的截图。我已经根据我的数据库标记了文本框。在运行我的winform时,屏幕截图中的文本框被设置为不可见

到底是什么问题


@卡卡洛特 这是我最初拥有的

MysqlConn=新的MySqlConnection MysqlConn.ConnectionString=“server=localhost;userid=server;password=server;database=heavisa\u database” Dim rabit作为MySqlDataReader

    MysqlConn.Open()

    Dim pin As String
    pin = "UPDATE heavisa_database.new_employee SET (Employee_ID = '" & txtemployeeid.Text & "', Nat_ID = '" & txtnatid.Text & "', First_Name = '" & txtfirstname.Text & "', Middle_Name = '" & txtmiddlename.Text & "', Surname = '" & txtsurname.Text & "', NSSF_No = '" & txtnssfno.Text & "', KRA_Pin = '" & txtkrapin.Text & "', NHIF_No = '" & txtnhifno.Text & "', Residence = '" & txtresidence.Text & "', Mobile_No = '" & txtmobileno.Text & "', Email = '" & txtemail.Text & "', Job_Group = '" & cbojobgroup.Text & "', Employment_Date = '" & dtpemploymentdate.Text & "') WHERE Employee_ID = '" & txtemployeeid1.Text & "'"

    Try
        con = New MySqlCommand(pin, MysqlConn)
        rabit = con.ExecuteReader

        MessageBox.Show("Update Successful.")
        MysqlConn.Close()

    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MysqlConn.Dispose()

    End Try
这是我目前拥有的(这要归功于一位ekad先生)

把别针当作线 引脚=“更新heavisa_数据库。新员工设置员工ID=@employee_ID,Nat_ID=@Nat_ID,First_Name=@First_Name,Middle_Name=@Middle_Name,姓氏=@names,NSSF_No=@NSSF_No,KRA_Pin=@KRA_Pin,NHIF_No=@NHIF_No,Residence=@Residence,Mobile_No=@Mobile_No,Email=@Job_Group=@Job_Group,Employment_Date=@Employment_Date,其中员工ID类似“{0}%”


第一个代码给了我一个错误(请参阅上面的链接)。第二个代码可以工作,但它清空了我的字段,而不是更新。您是如何更新数据库中的表的?应该是这样的: (我要用我以前做过的一个项目的代码)


首先,一个简单的问题是
heavisa_数据库。新员工
一张表?正确命名他们是非常明智的,如果是表,你可以将
tbl
放在你想要的名称之前,如果是数据库,可以将
db
放在名称之前。只是为了防止混淆。我认为你在什么时候不需要
阅读器
更新表中的记录,如果我错了请更正:p

好的,老实说,我真的不太理解ekad先生提供的代码。这里有一个代码你可以试试。哦,你真的不需要在
集合之后加括号

//Global Vars
Dim connectionString As String = "server=localhost;userid=server;password=server;database=heavisa_database"
Dim conn As New MySqlConnection
首先,让我们制作一些简单的函数(您可以将其放在代码中的任意位置):

因此,更新按钮的事件:

connect()

Dim pin As String
pin = "UPDATE new_employee SET Employee_ID = '" & txtemployeeid.Text & "', Nat_ID = '" & txtnatid.Text & "', First_Name = '" & txtfirstname.Text & "', Middle_Name = '" & txtmiddlename.Text & "', Surname = '" & txtsurname.Text & "', NSSF_No = '" & txtnssfno.Text & "', KRA_Pin = '" & txtkrapin.Text & "', NHIF_No = '" & txtnhifno.Text & "', Residence = '" & txtresidence.Text & "', Mobile_No = '" & txtmobileno.Text & "', Email = '" & txtemail.Text & "', Job_Group = '" & cbojobgroup.Text & "', Employment_Date = '" & dtpemploymentdate.Text & "' WHERE Employee_ID = '" & txtemployeeid1.Text & "'"

    //lets create new command
    Dim command As New MySqlCommand

    //sets the connection for our command
    command.Connection = conn
    command.CommandText = pin

    command.ExecuteNonQuery()

    disconnect()

    MessageBox.Show("Record saved!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)

试试上面给出的代码,我很确定它会起作用。祝你好运!

你如何准确地将数据绑定到datagridview?绑定到mysqladmin中的数据库?这就是你的意思吗?如果是,那么我认为我没有这么做,我也不知道怎么做。为什么你需要datagridview?如果你只想输入那些文本框和更新在记录中输入员工ID,我认为您不需要datagridview。您可以将这些文本框放在datagridview之外,然后删除datagridview。其想法是在datagridview中显示所有员工的姓名。这就是我为什么选择它的原因。一旦我这样做了,我就可以对记录进行更改并将其更新到我的数据库中代码也可以工作,但它再次给我留下了空字段:'(请参见上面的屏幕截图注释哦,heavisa_database是数据库的名称。new_employee是表。我想最好是删除heavisa_database部分,因为它在代码中不必要。这是你的问题,伙计!只需输入
UPDATE new_employee
,不要包含数据库的名称。如果你使用上面的代码,它会工作的,只需将
heavisa_数据库更改为
new_employee
,在
pin
部分。您不需要再包含数据库的名称,因为我们已经在全局vars部分中指定了要使用的数据库。告诉我它是否工作:p很遗憾,我无法工作。但是我知道nk读取WHERE Employee_ID='”&txtemployeeid1.Text&"’。如果这段代码是灵感的来源,那么这个答案根本解决不了问题。MartinBaraza在问题评论中说:这个想法是在datagridview中显示所有员工的姓名。因此,如果你真的想回答这个问题,那么试着帮助@MartinBaraza了解如何首先将数据绑定到datagridview。@ekad,dude,wha这篇文章中的问题是,为什么他的数据没有显示在数据库中。没有显示在datagrid视图上。这是在他的另一篇文章中,没有显示在这里。
//Global Vars
Dim connectionString As String = "server=localhost;userid=server;password=server;database=heavisa_database"
Dim conn As New MySqlConnection
//remember that conn is our MySqlConnection
Private Sub connect()
    conn.ConnectionString = connectionString
    conn.Open()
End Sub

Private Sub disconnect()
    conn.Close()
End Sub
connect()

Dim pin As String
pin = "UPDATE new_employee SET Employee_ID = '" & txtemployeeid.Text & "', Nat_ID = '" & txtnatid.Text & "', First_Name = '" & txtfirstname.Text & "', Middle_Name = '" & txtmiddlename.Text & "', Surname = '" & txtsurname.Text & "', NSSF_No = '" & txtnssfno.Text & "', KRA_Pin = '" & txtkrapin.Text & "', NHIF_No = '" & txtnhifno.Text & "', Residence = '" & txtresidence.Text & "', Mobile_No = '" & txtmobileno.Text & "', Email = '" & txtemail.Text & "', Job_Group = '" & cbojobgroup.Text & "', Employment_Date = '" & dtpemploymentdate.Text & "' WHERE Employee_ID = '" & txtemployeeid1.Text & "'"

    //lets create new command
    Dim command As New MySqlCommand

    //sets the connection for our command
    command.Connection = conn
    command.CommandText = pin

    command.ExecuteNonQuery()

    disconnect()

    MessageBox.Show("Record saved!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)