使用“'”时插入失败。 示例字符串是:他是个男孩。 我试图使用转义符号跳过“'”,但我认为这不是正确的方法。
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();
我确实可以选择用“`”替换“'”,但这也会改变数据库中的文本。我希望将“'”保留为相同,并将其插入到数据库中。
答案 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);