如何处理用户输入的字符串中的撇号?
How to handle apostophes in user inputted String?
所以我正在制作一个程序,将来自 GUI 的用户输入作为参数。用户输入带撇号的单词或句子如何处理?
我用它向数据库输入一些东西,例如:
INSERT INTO users (firstname, lastname) VALUES ('"+firstNameString+"', '"+lastNameString+"')
如果用户的名字类似于 John O'Neill,这将引发错误。
鉴于我无法控制用户可能输入的内容,我该如何处理撇号?
要添加转义序列,您可以在 Oracle 中使用 '
,如果要转义 '
,则添加 '''
首先'
是String的开始
在我们的例子中,第二个 '
转义了第三个字符 '
为了避免出现这样的问题,请使用 PreparedStatements。通常你的代码看起来像这样:
....
PreparedStatement ps = null;
try {
ps = connection.prepareStatement("INSERT INTO users (firstname, lastname) VALUES (?,?)");
ps.setString(1,firstNameString);
ps.setString(2,lastNameString);
int result = ps.executeUpdate();
...
所以我正在制作一个程序,将来自 GUI 的用户输入作为参数。用户输入带撇号的单词或句子如何处理?
我用它向数据库输入一些东西,例如:
INSERT INTO users (firstname, lastname) VALUES ('"+firstNameString+"', '"+lastNameString+"')
如果用户的名字类似于 John O'Neill,这将引发错误。 鉴于我无法控制用户可能输入的内容,我该如何处理撇号?
要添加转义序列,您可以在 Oracle 中使用 '
,如果要转义 '
,则添加 '''
首先'
是String的开始
在我们的例子中,第二个 '
转义了第三个字符 '
为了避免出现这样的问题,请使用 PreparedStatements。通常你的代码看起来像这样:
....
PreparedStatement ps = null;
try {
ps = connection.prepareStatement("INSERT INTO users (firstname, lastname) VALUES (?,?)");
ps.setString(1,firstNameString);
ps.setString(2,lastNameString);
int result = ps.executeUpdate();
...