如果数据有引号或撇号,如何在数据库中插入数据

时间:2016-06-09 09:11:06

标签: c# asp.net oracle

我正在使用现有应用程序中用户的地址输入。

经常出现的问题是,由于发生了异常,用户在数据中输入任何撇号或引号。

例如:

用户输入为:

PLOT#B-102 BLOCK ' C'

由于引号,当数据插入数据库时​​会发生异常,因为它看起来是oracle数据库中的语法错误。

我通过以下示例:

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

但这取决于撇号插入的位置,但在我的情况下,我不知道用户是否以及将在何处插入此类引用。

我该如何处理?

任何人都可以帮助我

提前致谢。

3 个答案:

答案 0 :(得分:2)

您需要将single quotes替换为single quotesescape single quote

string Address = txtAddress.Text;
Address = Address.Replace("'","''");

答案 1 :(得分:1)

看起来你正在通过连接字符串来构建插入语句。 这不是一个好习惯。 您的应用程序将容易受到SQL注入攻击。您应该使用参数化查询来执行此操作。

如果您仍想这样做,可以使用替换方法替换'到''如下面的代码片段

Replace("'", "''")

要使用参数化查询,请检查以下链接。

http://www.techrepublic.com/article/shorten-development-time-by-using-parameterized-queries-in-adonet/

https://www.safaribooksonline.com/library/view/adonet-in-a/0596003617/ch04s04.html

答案 2 :(得分:0)

你也可以试试这个......

string address = "PLOT # B-102 BLOCK \'C\'";

详细信息:https://msdn.microsoft.com/en-us/library/267k4fw5(v=vs.110).aspx