30

使用“'”时插入失败。示例字符串是:He's is a boy。我尝试使用转义符号跳过“'”,但我相信这不是正确的方法。

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();

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

4

5 回答 5

56

试试这个

    string sql= "insert into gtable (1text,1memo) values (@col1,NULL)";
    OleDbCommand cmd = new OleDbCommand(sql, con);
    cmd.Parameters.AddWithValue("@col1",textBox3.Text);
    con.Open();
于 2012-08-11T06:14:45.007 回答
47

尝试

string sql= "insert into gtable (1text, 1memo) " + 
            "values ('" + textBox3.Text.Replace("'", "''") + "', null)";
于 2012-08-11T06:12:44.857 回答
8

要在数据库中插入单引号,请替换'''. 在数据库中只有单引号会去。

用这个

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

其余代码相同。

于 2012-08-11T06:13:26.007 回答
2

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);
于 2012-08-11T06:26:24.617 回答
-5

最好的方法是:

string Name = Server.HtmlEncode(txtName.Text);
于 2014-09-12T11:10:02.447 回答