2014-01-06 43 views
0

我刚刚切换到使用mysql查询参数,并担心我找不到如何将结果保存到数据表中。我想将此选择查询的结果保存到数据表“表”中。以前我会做将mysql结果保存到数据表

adptr = New MySqlDataAdapter("SELECT * from users WHERE uname='" & MySqlHelper.EscapeString(UsernameTextBox.Text) & "' and pword=md5('" & MySqlHelper.EscapeString(PasswordTextBox.Text) & "')", con) 
    Try 
     adptr.Fill(table) 
    Catch err As Exception 
     Dim strError As String = "Exception: & err.ToString()" 
    End Try 

现在我有

Public table As New DataTable 
    Dim cb As New MySqlConnectionStringBuilder 
    cb.Database = dbfile 
    cb.Server = dbserver 
    cb.UserID = dbuser 
    cb.Password = dbpassw 

    Using cnn As New MySqlConnection(cb.ConnectionString) 
     Using cmd As New MySqlCommand("SELECT * from users WHERE uname=&uname and pword=md5(&pword)", cnn) 
      cmd.Parameters.AddWithValue("@uname", UsernameTextBox.Text) 
      cmd.Parameters.AddWithValue("@pword", PasswordTextBox.Text) 

      Try 
       cnn.Open() 
       cmd.ExecuteNonQuery() 
      Catch ex As Exception 
       MessageBox.Show(ex.ToString) 
      End Try 
     End Using 
    End Using 

我怎么将结果保存到表?

回答

1

使用命令来初始化适配器,然后像以前一样

Using cnn As New MySqlConnection(cb.ConnectionString) 
    Using cmd As New MySqlCommand("SELECT * from users WHERE uname=&uname and pword=md5(&pword)", cnn) 
     cnn.Open 
     cmd.Parameters.AddWithValue("&uname", UsernameTextBox.Text) 
     cmd.Parameters.AddWithValue("&pword", PasswordTextBox.Text) 
     adptr = New MySqlDataAdapter(cmd) 
     adptr.Fill(table) 
    End Using 
End Using 

的ExecuteNonQuery应该用于更改数据库表(INSERT/UPDATE/DELETE)或其他DDL命令查询工作。你的情况准备的命令可用于个MySqlDataAdapter的overladed构造的一个(看看这个文档为SqlDataAdapter它们具有相同的逻辑效果)

而且我不知道该了MySQLParameter前缀是&(我有总是使用@?

+0

如果使用&uname参数也必须更改 - @也可以工作,虽然 - 谢谢你的答案 –