使用c#在mysql中插入引号
本文关键字:插入 mysql 使用 | 更新日期: 2023-09-27 18:28:37
有人能帮我用c#在mysql中插入单引号吗。我知道如何实现这一点,但我不知道语法,到目前为止,这是我的代码
if (txtcode.Text.Contains("'") == true)
{
txtcode.Text.Replace("'", "''");
}
但是我的txtcode没有得到''的值,我也尝试了这个代码
if (txtcode.Text.Contains("'") == true)
{
txtcode.Text.Replace("'", "'''");
}
仍然不起作用。。有人能猜到如何做到这一点吗?提前感谢
您不需要执行任何字符串替换,只需使用参数化SQL就可以了。
所以你不能这样做:
// BAD CODE - DO NOT USE
string sql = "INSERT INTO TABLE Person (ID, NAME) VALUES ('" + id
+ "', '" + txtCode.Text + "')";
即:
- 易受SQL注入攻击(以及引号等尴尬字符)
- 转换时很脆(日期/时间转换特别痛苦)
- 很难阅读,因为它混合了SQL和数据
相反,你会使用类似的东西:
string sql = "INSERT INTO TABLE Person (ID, NAME) VALUES (@id, @name)";
using (var command = new MySqlCommand(sql, conn))
{
command.Parameters.Add("@id", MySqlDbType.VarChar).Value = id;
command.Parameters.Add("@name", MySqlDbType.VarChar).Value = txtCode.Text;
command.ExecuteNonQuery();
}
您应该真正使用参数化查询,它将正确处理引号,如:
string s = "Text with this ''quote''";
MySqlCommand cmd = new MySqlCommand("INSERT INTO table (Column) VALUES (@quotedString);", connection);
cmd.Parameters.AddWithValue("@quotedString", s);
cmd.ExecuteNonQuery();
这也防止了SQL注入的进行。
你能试试这个吗:
if (txtcode.Text.Contains("'") == true)
{
txtcode.Text.Replace("'", @"'''");
}