2017-07-19 62 views
-2

這是我想使用插入一個用戶名和密碼將被添加到MySQL數據庫

 MySqlCommand cmd = new MySqlCommand(); 
     cmd.Connection = conn; 

     cmd.CommandText = "insert into student_logintable.login_table(username,password) values = '"+txtusernew.Text.Trim()"','"+txtpasswordnew.Text.Trim()"'"; 
     cmd.Parameters.Add("username", MySqlDbType.VarChar).Value = " + txtusernew.Text.Trim() "; 
     cmd.Parameters.Add("password", MySqlDbType.VarChar).Value = " + txtpasswordnew.Text.Trim()"; 
     cmd.ExecuteNonQuery(); 
+0

有一個隱藏問題的地方? –

+0

問題是什麼? – androidnoobdev

+0

我覺得這樣的衝動,告訴你**從不以純文本**存儲密碼!事實上,**從不以任何方式存儲密碼**!基本上總是有一種更好更安全的方式來處理登錄數據(哈希和鹽漬)。有關更多信息,請參閱https://stackoverflow.com/a/1054033/1336590。 – Corak

回答

0

我相信INSERT語句不使用=標誌歸屬的代碼。

cmd.CommandText = "INSERT INTO student_logintable.login_table(username, password) VALUES ('" +txtusernew.Text.Trim()+ "', '" +txtpasswordnew.Text.Trim()+ "')"

+0

值得一提的是,您的代碼示例允許通過將輸入值直接連接到SQL命令來進行SQL注入。參數絕對是必需的,但您對INSERT語句絕對正確 – Ortund

0

它看起來並不像你對我真的格式化你的參數除了非常好。我想推薦使用Parameters.AddWithValue。看一看:

cmd.Parameters.AddWithValue("username", txtusernew.Text.Trim()); 

你需要的時候你雖然創建包含在參數名@:

cmd.Parameters.AddWithValue("@username", txtusernew.Text.Trim()); 

INSERT語句中也是不正確的。請記住,格式是:

INSERT INTO [table_name] ([column_name], ...) VALUE|VALUES([value], ...)

所以你插入語句(帶參數)應該看起來更像是這樣的:

​​
相關問題