![](/img/trans.png)
[英]Clean SQL Server database from Visual Studio 2013 database project
[英]Using Database from SQL Server in Visual Studio
我正在Visual Studio中做一個C#項目。 出於項目的目的,我需要在SQL Server中包含一個數據庫。
這是我在SQL Server中編寫的內容:
create table user1 (
id int primary key identity,
username varchar(50),
password varchar(50));
然后,在Visual Studio中,我想創建一個將在數據庫中插入值的表單(從數據庫讀取工作正常!)。 這是我的代碼:
string sql = "INSERT INTO user1(username, password) VALUES ('"+textBox1.Text + "'+" + textBox2.Text+")";
但是我收到一條錯誤消息:
System.Data.SqlClient.SqlException :INSERT語句中的列多於VALUES子句中指定的值。 VALUES子句中的值數必須與INSERT語句中指定的列數相匹配。
我究竟做錯了什么?
避免直接從用戶輸入構造SQL語句。 這只會讓您在使用SQL注入攻擊時陷入困境。 請改用參數化的SQL。 如下。
string sql = "INSERT INTO user1(username, password) VALUES (@username, @password)";
command.CommandText = sql;
command.Parameters.Add(new SqlParameter("@userName", textBox1.Text));
command.Parameters.Add(new SqlParameter("@password", textBox2.Text));
話雖如此,我也強烈反對您以純文本形式存儲用戶密碼。 這將使你在以后的軌道上打開一個受傷的世界。
像這樣做:
string sql = "INSERT INTO user1(username, password) VALUES ('"+textBox1.Text + "','" + textBox2.Text+"')";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.