2014-12-03 30 views
0

我正在設計一個註冊表格。 以下是我的代碼: 但我做完之後,那麼SQL表格顯示不是用戶的數據....? 數據庫表顯示& &用戶名,密碼& & (用戶名,密碼......是文本框名稱)ASP.NET(VB)如何將textbox.text插入SQL數據庫?

Protected Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click  
     Dim Conn As SqlConnection = New SqlConnection(".....") 
     Conn.Open() 
     Dim sqlstr As String = "Insert Into user_profile(username,password,nickname,realname,email) Values('" & username.Text & "','" & password.Text & "','" & nickname.Text & "','" & realname.Text & "','" & email.Text & "')" 
     Dim cmd As New SqlCommand(sqlstr, Conn) 
     cmd.ExecuteNonQuery() 

     cmd.Cancel() 
     Conn.Close() 
     Conn.Dispose() 

    End Sub 
+0

你應該真的想到使用SqlParameters,不要連接。 – 2014-12-03 15:36:47

+0

嗨。我的用戶名是'DROP TABLE user_profile; - **注**請勿使用我的用戶名。 [SQLI](http://en.wikipedia.org/wiki/SQL_injection) – jbutler483 2014-12-03 15:36:48

+0

從Sql注入問題的一部分,檢查是否[這個問題/答案](http://stackoverflow.com/questions/17147249/why-保存更改爲數據庫失敗/ 17147460#17147460)適用於您的情況 – Steve 2014-12-03 15:37:37

回答

0

好吧,首先,我要刺傷你的問題。然後,我們需要談論SQL注入。

試試這個:

Dim MyValues as String = String.Format("'{0}', '{1}', '{2}', '{3}', '{4}'", username.Text, password.Text, nickname.Text, realname.Text, email.Text) 

Dim sqlstr As String = "Insert Into user_profile(username,password,nickname,realname,email) Values(MyValues)" 

(。我沒有測試的代碼關注的語法錯誤)現在

,話雖如此,這是至關重要的,你明白的危險你試圖做到這一點。這裏的嚴重問題是您對SQL注入攻擊廣泛開放。去谷歌上查詢。但簡而言之,使用這種方法,某人可以將諸如「drop table」之類的命令放入您的文本框中,並且這些命令將在您的數據庫中執行。

正確的做法是創建一個包含INSERT語句的存儲過程,然後使用參數將值傳遞給它。網絡上充斥着關於如何做到這一點的教程。你會發現一個很容易。

祝你好運!

+0

非常感謝! 它完成了!好! – 2014-12-04 08:21:08

相關問題