mysql - 插入新数据时按钮不起作用

标签 mysql vb.net

当我输入的数据还不可用时。按钮不起作用 但是当我在数据库中输入现有数据时,该按钮用于查找数据库中的现有记录和 msgbox.appear 这是我的编码。 (我使用的是Microsoft Visual Basic 2008 express edition数据库mysql)

Imports MySql.Data.MySqlClient
Public Class Form2
    Public conn As MySqlConnection
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Application.DoEvents()
        Button1.Focus()

        conn = New MySqlConnection
        'conn.ConnectionString = "server=localhost;database=ilmu;userid=root;password= ''"
        Try
            conn.Open()
        Catch ex As Exception
            MessageBox.Show("Error1: " & ex.Message)
        End Try
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        conn = New MySqlConnection("server=localhost;database=ilmu;userid=root;password= ''")
        Try
            conn.Open()
            Dim sqlquery As String = "SELECT * FROM visitor WHERE nama = '" & TextBox1.Text & "';"
            Dim data As MySqlDataReader
            Dim adapter As New MySqlDataAdapter
            Dim command As New MySqlCommand
            command.CommandText = sqlquery
            command.Connection = conn
            adapter.SelectCommand = command
            data = command.ExecuteReader
            While data.Read()
                If data.HasRows() = True Then
                    If data(2).ToString = TextBox2.Text Then
                        command = New MySqlCommand
                        command.Connection = conn
                        tkhupd = Now.ToString("yyyy-MM-dd HH:mm:tt")
                        command.CommandText = "INSERT INTO visitor(noK,khupd)VALUES ('" & TextBox1.Text & "','" & tkhupd & "')"
                        command.ExecuteNonQuery()
                        MessageBox.Show(" Berjaya, Sila Masuk. ", "Tahniah", MessageBoxButtons.OK, MessageBoxIcon.Information)

                    Else
                        MsgBox("exist")

                    End If
                Else
                    MsgBox("Failed Login.")
                End If
            End While

        Catch ex As Exception

        End Try
    End Sub
End Class

最佳答案

我不确定当数据库中没有匹配记录时您要做什么,但是您没有任何在没有匹配条目的情况下会被命中的代码。

如果没有匹配的记录,则不满足您的 while 条件,循环中什么也不会发生。

修复它可能涉及重新排列循环顺序和 if 条件。

首先检查是否有 data.hasRows。

例子:

If data.HasRows() = True Then
   While Data.Read
       //code here for found rows
   End While
 Else
    //code for no matching entries
 End If

正如 Joel 的评论中所提到的,您确实应该考虑使用参数化查询。

更改插入命令的示例:

 command.CommandText = "INSERT INTO visitor(noK,khupd)VALUES (?noK,?khupd)"
 command.Parameters.AddWithValue("?noK",TextBox1.Text)
 command.Parameters.AddWithValue("?khupd", tkhupd)
 command.ExecuteNonQuery()

关于mysql - 插入新数据时按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204713/

相关文章:

mysql 正则表达式与多个替换?

mysql - MySQL查询执行计划的限制因地点而异

jquery - 如何获取点击了哪个按钮?

c# - .NET Double.TryParse(num, format, cultureinfo, out) 错误

c# - 中止使用 Delegate.BeginInvoke 启动的线程

.net - 使用 ADO.net(OLEDB) 导入 UTF-8 CSV 文件

mysql - 检查列值是否在 24 小时前重复触发 IF 语句

java - 在 spring MVC 中将图像上传到服务器并将引用存储在 mysql 数据库中

mysql - 提取日期范围之间的点击次数

asp.net - 从客户端,强制整个页面验证