我有一个带有MySQL后端的ASP.Net网页.此站点上的博客内容是从MySQL数据库填充的.当我想写博客文章时,我会打开MySQL Workbench,右键单击表并选择"编辑数据",然后继续输入我的条目.好吧,现在我正在开发一个C#应用程序,它允许我写一个博客条目,这样我就不必每次都打开工作台.到目前为止,除了一个小问题外,一切都很好:特殊字符.
==实施例==
在textBox1中,我将编写以下内容,
我可以告诉你,由于撇号,这不起作用
我的代码看起来像这样(可能有点关闭,因为我从内存写这个,但它确实有效):
MySQLCommand cmd = new MySQLCommand("",conn);
cmd.CommandText = "INSERT INTO blogEntry (entryText) VALUE (" + textBox1.text + ");";
...
Run Code Online (Sandbox Code Playgroud)
这有效,文本被插入到我的表中.但是,当我把它拉回来并将其绑定到DataGridView时,我看到:
我可以告诉你,这赢了
就是这样(或者我看到一些奇怪的格式或其他东西).
==内容==
我知道它与撇号没有被逃脱有关.所以我的问题是:
1)在C#中,有没有办法遍历textBox1中的整个文本并用转义符(\')替换所有特殊字符('),以便它们在从数据库中提取时正确显示?
2)我在INSERT语句中读到了一些使用存储过程或参数的人.这对我有用吗,我将如何做到这一点(我找不到具体案例的例子)?
感谢您的帮助,想法,链接等.
Suj*_*Rai 17
如果您使用的是Mysql客户端库,则可以使用此功能
MySql.Data.MySqlClient.MySqlHelper.EscapeString("YOUR DATA STRING")
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
MySQLCommand cmd = new MySQLCommand("",conn);
cmd.CommandText = "INSERT INTO blogEntry (entryText) VALUE ('"+MySql.Data.MySqlClient.MySqlHelper.EscapeString(entryText)+"');";
Run Code Online (Sandbox Code Playgroud)
Mar*_*ins 14
最好使用参数化查询.这样你就不需要转义字符了,它会(更重要的是)帮助防止SQL注入攻击.
cmd.CommandText = "INSERT INTO blogEntry (entryText) VALUES (@myvalue)"
Run Code Online (Sandbox Code Playgroud)
然后是:
cmd.Parameters.AddWithValue("@myvalue", TextBox1.Text);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17047 次 |
| 最近记录: |