2013-02-16 80 views
1

我需要保存在運行時輸入的數據。我怎麼做?我嘗試了很多代碼。我的代碼中沒有出現任何錯誤,但是當我退出並檢查數據表時,數據不存在於數據庫中。需要使用vb8 express在sql數據庫中保存數據

這裏是我的代碼:

Dim con As New SqlClient.SqlConnection 
Dim cmd As New SqlClient.SqlCommand 

Try 
    con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\ClubDatabase.mdf;Integrated Security=True;User Instance=True" 
    con.Open() 
    cmd.Connection = con 
    cmd.CommandText = "INSERT INTO Liquor([Product ID], [Name], [Quantity], [Cost Price], [Selling Price]) VALUES('" & Product_IDTextBox.Text & "','" & NameTextBox.Text & "','" & QuantityTextBox.Text & "','" & Cost_PriceTextBox.Text & "','" & Selling_PriceTextBox.Text & "')" 
    cmd.ExecuteNonQuery() 
    MessageBox.Show("added") 
Catch ex As Exception 
    MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records") 
Finally 
    con.Close() 
End Try 
+2

您查詢是容易的'SQL injection'。 – spajce 2013-02-16 17:31:04

回答

1

整個用戶實例和AttachDbFileName =方法是有缺陷的 - 在最好的!在Visual Studio中運行應用程序時,它將複製.mdf文件(從您的App_Data目錄到輸出目錄 - 通常爲.\bin\debug) - 最有可能爲,您的INSERT工作得很好 - 但是您只是看着錯誤.mdf文件到底!

如果你想堅持這種方法,那麼試着在myConnection.Close()調用上放一個斷點 - 然後用SQL Server Mgmt Studio Express檢查.mdf文件 - 我幾乎可以確定你的數據在那裏。

在我看來真正的解決方案

  1. 安裝SQL Server Express(和你已經做到這一點無論如何)

  2. 安裝SQL Server Management Studio中快速

  3. 中創建您的數據庫SSMS Express,給它一個邏輯名稱(例如ClubDatabase

  4. 使用其邏輯連接到數據庫名稱(在服務器上創建時給出) - 並且不要亂用物理數據庫文件和用戶實例。在這種情況下,您的連接字符串將是這樣的:

    Data Source=.\\SQLEXPRESS;Database=ClubDatabase;Integrated Security=True 
    

    和其他一切是正是和以前一樣......