我正在使用现有应用程序中用户的地址输入。
经常出现的问题是,由于发生了异常,用户在数据中输入任何撇号或引号。
例如:
用户输入为:
PLOT#B-102 BLOCK ' C'
由于引号,当数据插入数据库时会发生异常,因为它看起来是oracle数据库中的语法错误。
我通过以下示例:
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
但这取决于撇号插入的位置,但在我的情况下,我不知道用户是否以及将在何处插入此类引用。
我该如何处理?
任何人都可以帮助我
提前致谢。
答案 0 :(得分:2)
您需要将single quotes
替换为single quotes
至escape
single quote
string Address = txtAddress.Text;
Address = Address.Replace("'","''");
答案 1 :(得分:1)
看起来你正在通过连接字符串来构建插入语句。 这不是一个好习惯。 您的应用程序将容易受到SQL注入攻击。您应该使用参数化查询来执行此操作。
如果您仍想这样做,可以使用替换方法替换'到''如下面的代码片段
Replace("'", "''")
要使用参数化查询,请检查以下链接。
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