无法在asp.net中将数据插入数据库?

时间:2012-01-30 15:01:30

标签: asp.net sql

error screenshot

将数据插入数据库时​​收到给定的错误。查询没问题。我不知道出了什么问题。

4 个答案:

答案 0 :(得分:10)

这里有3件事。


在表名周围添加括号,因为它是关键字:

INSERT INTO [User]

在将来命名对象时尽量避免使用关键字。从长远来看,它可以省去很多麻烦!

<强> View reserved keywords here


在您的值周围添加括号,因此您的查询格式为:

INSERT INTO [TableName] (ColumnA, ColumnB) VALUES (@ParamA, @ParamB)

最重要的是(因为它的1个错误,你不会被提示,但从长远来看会受到影响),参数化您的查询。这将避免 SQL Injection ,并且在编写任何SQL查询时应该是常见做法:

cmd.CommandText = "Insert into [User] (Name, Uid) values (@Name, @Uid)";
cmd.Parameters.Add("@Name", SqlDbType.Nvarchar).Value = tb1.Text;
cmd.Parameters.Add("@Uid", SqlDbType.Int).Value = tb1.Text;

答案 1 :(得分:4)

您遗失()[]

Insert into [User] (Name, Uid) values ('"+tb1.Text+"', '"+tb1.Text+"')";

请注意在保留字User周围使用'['和']'。并且,像@marc_s一样:“一个人应该真正使用参数化查询以避免SQL Injection

查看THIS了解详情。

答案 2 :(得分:3)

User是一个关键字。您可以使用括号[]围绕它们来使用保留关键字。并且您应该用括号()括起值。

尝试以下方法:

str = "Insert into [User] (Name, Uid) values
       ('" + tb1.Text + "', '" + tb1.Text + "')";

或者,更具可读性:

str = String.Format("Insert into [User] (Name, Uid) values ('{0}', '{1}')",
                    tb1.Text, tb2.Text);

另外,正如jadarnel27所评论的那样,请考虑使用参数化SQL来阻止SQL injection attacs

答案 3 :(得分:2)