串插在单引号逃逸到数据库(single quotes escape during string in

2019-06-26 23:43发布

当“'”用于插入失败。 例如字符串是:他是一个男孩。 我已经尝试跳过““”使用转义符,但我相信这是不正确的做法。

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

我确实有“'”和‘`’更换的选择,但这种变化在DB的文字以及。 我希望保留“'”一样,也把它插入到数据库。

Answer 1:

尝试

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


Answer 2:

试试这个

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


Answer 3:

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

用这个

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

其余的代码是一样的。



Answer 4:

在MSDN文章与string.replace它说:

返回在当前字符串中指定的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);


Answer 5:

最好的办法是:

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


文章来源: single quotes escape during string insertion into a database