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

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

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

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

尝试

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

试试这个

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

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

用这个

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

其余代码相同。

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

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

在第一行中,您没有将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); 

最好的方法是:

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