Я пытаюсь сравнить введенные значения экрана со значением, хранящимся в БД. В настоящее время я пытаюсь использовать этот код:
cell = sheet.getRow(i).getCell(2);
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection ("jdbc:mysql://madison-dev.czr6vej2htnn.us-east-1.rds.amazonaws.com:3306/madisondb","madisonadmin","t4xuw94$");// + "databasename=madison-dev.czr6vej2htnn.us-east-1.rds.amazonaws.com";
Statement st = con.createStatement();
ResultSet Rs = st.executeQuery("select name, zipcode, state, city, street from business_master where user_id =(\r\n" +
"select id\r\n" +
"from user_master\r\n" +
"where email = 'cell.getStringCellValue()') \r\n");
while (Rs.next()) {
// System.out.println(Rs.getString(1) + " " + Rs.getString(2) + " " + Rs.getString(3) + " "
// + Rs.getString(4) + " " + Rs.getString(5));
System.out.println(Rs.getString(0));
}
Экран не показывает никаких значений.. и когда я пытаюсь распечатать System.out.println(Rs.getString(3))
вне цикла, он дает мне ошибку
java.sql.SQLException: Незаконная операция при пустом наборе результатов.
Вы пытаетесь найти все строки, в которых адрес электронной почты буквально является 'cell.getStringCellValue()'
а не значением, возвращаемым этим методом.
Пока вы кодируете строку запроса, это заставляет вас открывать атаки SQL-инъекций. Вместо этого используйте подготовленное выражение
PreparedStatement st = con.prepareStatement(
"select name, zipcode, state, city, street from business_master where user_id =(" +
"select id " +
"from user_master " +
"where email = ?)");
st.setString(1, cell.getStringCellValue());
ResultSet Rs = st.executeQuery();