如何使搜索栏不需要输入双引号?



大家好,我正在尝试在Java中创建这个搜索栏,但当我搜索时没有输入双引号,我得到这个错误

搜索错误图像

但是当我输入数字或者双引号的单词时,它会正常工作

搜索双引号图像

这是我的代码

代码图像


private void jButton_Show1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
try{
String Accounts_Choose_Value = jTextField1.getText();
// Accounts_Choose_Value = (String) Accounts_jComboBox_Choose_Value.getSelectedItem();

if(Accounts_Choose_Value.equals(Accounts_Choose_Value)){
String sql = "SELECT * FROM accounts WHERE URL="+Accounts_Choose_Value;
con= DriverManager.getConnection("jdbc:mysql://localhost/accountmanagerdb","root","");
Statement s = con.prepareStatement(sql);
ResultSet rs =s.executeQuery(sql);
if(rs.next()){
String Account_User_Name =rs.getString(2);
String Account_Email =rs.getString(3);
String Account_Password =rs.getString(4);
String Account_Backup_Codes =rs.getString(5);

jLabel_Account_User_Name.setText(Account_User_Name);
jLabel_Account_Email.setText(Account_Email);
jLabel_Account_Password.setText(Account_Password);
jLabel_Account_Backup_Codes.setText(Account_Backup_Codes);
}
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex,
"Database",JOptionPane.ERROR_MESSAGE);        

}

}

我没有在textfield中写任何东西

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
// TODO add your handling code here:
} 

修改这一行,但要注意SQL注入

String sql = "SELECT * FROM accounts WHERE URL=""+Accounts_Choose_Value+""";

基本上,你需要将where子句条目用双引号括起来,你的第一个查询生成

SELECT * FROM accounts WHERE URL=google

也就是说你要给出列值URL等于google的所有行

正确的查询是

SELECT * FROM accounts WHERE URL="google"

现在你要求给出URL等于"google"的所有行字符串

在第一种情况下,你的代码失败了,说我找不到一个名为google

的列编辑

基本上你不应该直接字符串插入你的变量,这会导致安全问题

你可以参考如何在这里做预处理语句

Java -转义字符串防止SQL注入

相关内容

  • 没有找到相关文章

最新更新