2012-02-09 8 views
1

データを入力するときにボタンが使用できません。ボタンが機能しません しかし、私はデータベースに既存のデータを入力すると、データベース内の既存のレコードを見つけるためにボタンが働き、msgbox.appear 私のコーディング。新しいデータを挿入するときにボタンが機能しない

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 
+1

があなたのクエリ文字列を構築するためにそのように文字列の連結を使用しないでください。今まで! –

答えて

0

私はあなたがデータベース内に一致するレコードが存在しないときにやろうとしているかわからない(私は、マイクロソフトのVisual Basic 2008 Express EditionのデータベースのMySQLを使用しています)がありますが、希望任意のコードを持っていません一致するエントリがない場合にヒットする。

一致するレコードがない場合、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 

そして、ジョエルさんのコメントで言及されているように、あなたが本当にパラメータ化クエリを使用して見なければなりません。変更されたあなたのinsertコマンドの

例:

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

ありがとうございました。 – ieyla

関連する問題