C# 由于字符(';)而导致数据库插入问题
如果试图在数据库中插入包含字符C# 由于字符(';)而导致数据库插入问题,c#,sql,asp-classic,C#,Sql,Asp Classic,如果试图在数据库中插入包含字符(')的字符串,则会遇到问题 SQL ="Insert into mytable (name) values ('"&Request("name")&"') " 初学者的解决方案是 SQL ="Insert into mytable (name) values (Replace('"&Request("name")&"',"'","@") " 例如,在检索此记录时,您必须将其更改回 但是,问题是,如果我有大量的这些字段可能包含这个
(')
的字符串,则会遇到问题
SQL ="Insert into mytable (name) values ('"&Request("name")&"') "
初学者的解决方案是
SQL ="Insert into mytable (name) values (Replace('"&Request("name")&"',"'","@") "
例如,在检索此记录时,您必须将其更改回
但是,问题是,如果我有大量的这些字段可能包含这个字符(')
,我会为每个字段使用这个耗时的解决方案吗?!或者你们中有谁有一个聪明而快速的解决方案 编辑:
正如现在在一些评论中所说的那样,建议采取的一种方式可以是以下方式
首先,获取所有值并将它们存储在变量中。然后使用参数创建insert语句,将值插入数据库
var value1 = //fetch what you want to insert
var value2 = //fetch what you want to insert
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand("INSERT INTO myTable VALUES (@value1, @value2)", con))
{
cmd.Parameters.AddWithValue("@value1", value1);
cmd.Parameters.AddWithValue("@value2", value2);
con.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
Console.WriteLine(ex.Message)
}
}
如果通过连接字符串来构建sql查询,您肯定会遇到问题。使用sql参数防止sql注入。Tim是唯一的答案。尤其是在使用web请求中的值时,这是危险的,而且存在错误。您将很难过滤掉任何会破坏此功能的内容,因此只需使用参数即可。