Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由于字符(';)而导致数据库插入问题_C#_Sql_Asp Classic - Fatal编程技术网

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请求中的值时,这是危险的,而且存在错误。您将很难过滤掉任何会破坏此功能的内容,因此只需使用参数即可。