下面是我删减的C#:
thisConnection.Open();
string commandtext = "Insert into Table (Comments)values('@Comments')";
SqlCommand command = new SqlCommand(commandtext, thisConnection);
command.Parameters.Add("@Comments", SqlDbType.VarChar).Value = Comments;
command.ExecuteNonQuery();
thisConnection.Close();
我可以输入几乎任何东西,某些特殊的字符在被输入到数据库之前被删除,这对我来说是很好的,即使是一个单引号也会在工作中抛出扳手。我尝试过将.Replace("'","''");
添加到Comments
变量中,但这并没有改变任何事情,而且我认为使用参数可以防止这种情况发生。
我知道像这样的问题被问了很多次,但是到处都只是指向“使用参数!”
编辑:既然有四个人说了同样的话,我就在这里回复。我已经删除了@Comments
的单引号,但问题是完全一样的。任何带有单引号的输入都不会输入到数据库中。
在我们使用javascript之前,我已经添加了.replace(/'/g,"''")
,这是可行的,但我不明白为什么我必须这样做。
发布于 2013-09-27 09:21:11
你不需要单引号。
command.CommandText = "Insert into Table (Comments)values(@Comments)";
好的,在hvd
的评论之后,我读了一下,我看到这是通过执行sp_executesql
来实现的。
解决这个问题的方法可以有以下几点:
thisConnection.Open();
SqlCommand command = new SqlCommand(commandtext, thisConnection);
command.CommandText = "Insert into Table (Comments)values(@Comments)";
SqlParameter param = new SqlParameter();
param.ParameterName = "@Comments";
param.Value = Comments;
command.Parameters.Add(param);
command.ExecuteNonQuery();
thisConnection.Close();
发布于 2013-09-27 09:22:18
它应如下所示:
cmd.CommandText = "INSERT INTO Table (Comments) VALUES(@Comments)"
发布于 2013-09-27 09:22:37
使用参数时不必转义单引号。
假设Comments
是String
类型,那么只需执行以下操作:
command.CommandText = "Insert into Table (Comments)values(@Comments)";
command.Parameters.Add("@Comments", SqlDbType.VarChar).Value = Comments;
https://stackoverflow.com/questions/19047092
复制相似问题