2014-01-05 168 views
1

我想在vb.net中運行插入語句來添加記錄。當我在mysql控制檯上運行應用程序時,應用程序提供的這一行工作正常 - 並且mysql查詢在adaptr.Fill(utable)處出錯,我現在認爲這是因爲沒有任何數據填充到我的數據表中。這種確切的格式在我的應用程序中的其他地方使用Select和update語句。 任何想法?VB.net mysql插入不工作

Dim con As New MySqlConnection() 
    Dim adptr As New MySqlDataAdapter 
    Public utable As New DataTable 



      con.ConnectionString = "server=localhost;" _ 
& "user id=user;" _ 
& "password=password;" _ 
& "database=DMT;" 
      adptr = New MySqlDataAdapter(String.Format("INSERT INTO users (uname, pword, fname, lname, Usertype) VALUES ({0}, md5('{1}'), {2}, {3}, {4});", MySqlHelper.EscapeString(TextBox4.Text), MySqlHelper.EscapeString(passw), MySqlHelper.EscapeString(TextBox1.Text), MySqlHelper.EscapeString(TextBox2.Text), ulevl), con) 
      Try 
       adptr.Fill(utable) 
      Catch err As Exception 
       Dim strError As String = "Exception: " & err.ToString() 
       MsgBox(strError) 
      End Try 
+1

你在哪插入行?你調用'adptr.Fill'而不是調用'adptr.Insert'。 – Rahul

+0

.insert似乎不存在,但這是我似乎丟失的命令 –

回答

1

我會在構建SQL語句時使用參數。您可以使用下面的代碼將記錄插入到數據庫中。

Dim cb As New MySqlConnectionStringBuilder 
cb.Database = "DMT" 
cb.Server = "localhost" 
cb.UserID = "user" 
cb.Password = "password" 

Using cnn As New MySqlConnection(cb.ConnectionString) 
    Using cmd As New MySqlCommand("INSERT INTO users (uname, pword, fname, lname, Usertype) VALUES (@uname, md5(@pword), @fname, @lname, @usertype)", cnn) 
    cmd.Parameters.AddWithValue("@uname", TextBox4.Text) 
    cmd.Parameters.AddWithValue("@pword", passw) 
    cmd.Parameters.AddWithValue("@fname", TextBox1.Text) 
    cmd.Parameters.AddWithValue("@lname", TextBox2.Text) 
    cmd.Parameters.AddWithValue("@usertype", ulevl) 

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

這種方法是否會自動轉義注入數據 - 我認爲這就像用php編寫的語句 –

+1

當然可以。總是使用參數的原因之一。 – Jeff

+0

如果我有一個條件語句來決定我是插入還是更新 - 我可以提前打開語句並執行一次,或者連接超時 –