![](/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.