在将字符串插入数据库期间单引号转义

时间:2012-08-11 06:10:13

标签: c# database insert special-characters

使用“'”时插入失败。 示例字符串是:他是个男孩。 我试图使用转义符号跳过“'”,但我认为这不是正确的方法。

textBox3.Text.Replace("'", " \'");
string sql= "insert into gtable (1text,1memo) values ('"+textBox3.Text+"',null)";
        OleDbCommand cmd = new OleDbCommand(sql, con);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

我确实可以选择用“`”替换“'”,但这也会改变数据库中的文本。我希望将“'”保留为相同,并将其插入到数据库中。

5 个答案:

答案 0 :(得分:49)

试试这个

    string sql= "insert into gtable (1text,1memo) values (@col1,NULL)";
    OleDbCommand cmd = new OleDbCommand(sql, con);
    cmd.Parameters.AddWithValue("@col1",textBox3.Text);
    con.Open();

答案 1 :(得分:37)

string sql= "insert into gtable (1text, 1memo) " + 
            "values ('" + textBox3.Text.Replace("'", "''") + "', null)";

答案 2 :(得分:5)

在数据库中插入单引号将'替换为''。在数据库中,只有单引号。

使用此

string sql= "insert into gtable (1text,1memo) values ('" 
            + textBox3.Text.Replace("'", "''") + "', null)";

Rest代码相同。

答案 3 :(得分:1)

String.Replace的MSDN文章中,它说:

  

返回一个新字符串,其中当前字符串中所有出现的指定Unicode字符或字符串都被另一个指定的Unicode字符或字符串替换。

在第一行中,您没有将textBox3.Text的值赋给该方法调用的结果,这意味着绝对没有任何反应。

此外,要在SQL Server中转义引号,只需使用两个单引号(注意:与双引号不同)。

这应该会给你预期的结果:

textBox3.Text = textBox3.Text.Replace("'", "''");

此外,您可能希望查看String.Format以了解字符串连接需求。

String escapedInput = textBox3.Text.Replace("'", "''");
String sql = String.Format("insert into gtable (1text,1memo) values ('{0}',null)", escapedInput);

答案 4 :(得分:-5)

最好的方法是:

string Name = Server.HtmlEncode(txtName.Text);