2016-12-15 12 views
1

vb.netのテキストボックスにCOUNT(*)クエリから取得した値を表示しようとしていますが、取得した値を表示する代わりに、実際のクエリmysqlクエリから取得した値をVB.netのテキストボックスに表示する

ここ
Imports MySql.Data.MySqlClient 
Public Class Statistics 
Dim conn As MySqlConnection 
Dim command As MySqlCommand 
Dim query As String 
Dim dadapter As New MySqlDataAdapter 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    conn = New MySqlConnection 
    conn.ConnectionString = 
     "server=localhost;userid=root;database=librarydatabase" 
    Dim reader As MySqlDataReader 


    Try 
     conn.Open() 
     query = "SELECT COUNT(*) FROM login where users='" & Username.Text & "'" 


     command = New MySqlCommand(query, conn) 
     reader = command.ExecuteReader 

     dadapter.SelectCommand = command 
     If reader.HasRows Then 
      reader.Read() 
      takenout.Text = (query) 


     End If 

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

    End Try 

End Sub 

は私のプログラムのスクリーンショットです:

は、ここに私のコードですlink

私はそれがtakenoutでtakenout.Text =(クエリ)を置き換えるために変更するコードを修正しようとしています。テキスト=(reader.read())とreader.readを())上記とdadapter.SelectCommand =コマンドここ

が変更されたコードで削除:

Imports MySql.Data.MySqlClient 

Public Class Statistics 
Dim conn As MySqlConnection 
Dim command As MySqlCommand 
Dim query As String 
Dim dadapter As New MySqlDataAdapter 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    conn = New MySqlConnection 
    conn.ConnectionString = 
     "server=localhost;userid=root;database=librarydatabase" 
    Dim reader As MySqlDataReader 

    Try 
     conn.Open() 
     query = "SELECT COUNT(*) FROM login where users='" & Username.Text & "'" 


     command = New MySqlCommand(query, conn) 
     reader = command.ExecuteReader 


     If reader.HasRows() Then 

      takenout.Text = (reader.Read()) 


     End If 

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

    End Try 

End Sub 

このコードでは問題は解決しませんが、ユーザー名テキストボックスの内容にかかわらず、ボタンを押すとテキストボックスにtrueが表示されます。 link

+1

よりもむしろ盲目的にランダムコードをしようと、あなたはどのように[DbDataReaderの](https://msdn.microsoft.com/en-us/library/system.data.common見にMSDNで10分を費やす必要があります。 dbdatareader(v = vs.110).aspx)が動作します。行を 'read()'したら、データを取得する必要があります。しかし、1行しか返せない 'Count()'クエリの場合、読者は必要ありません。 'command.ExecuteScalar()'は値を返します – Plutonix

答えて

1

使用command.ExecuteScalar()代わり:ここ

はそのイメージです。

0

command.executescalar()を使用すると、問題が修正されます。

誰かが同様の問題を抱えており、実際の例を見たい場合は、ここに固定コードのコピーがあります。

Public Class Statistics 
Dim conn As MySqlConnection 
Dim command As MySqlCommand 
Dim query As String 
Dim dadapter As New MySqlDataAdapter 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    conn = New MySqlConnection 
    conn.ConnectionString = 
    "server=localhost;userid=root;database=librarydatabase" 
    Dim numtakenout As String 

    Try 
     conn.Open() 
     query = "SELECT COUNT(*) FROM login where users='" & Username.Text & "'" 


     command = New MySqlCommand(query, conn) 


     numtakenout = Convert.ToString(command.ExecuteScalar()) 


     takenout.Text = numtakenout 




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

    End Try 

End Sub 
関連する問題