Java检查数据库中是否存在该值
你好,我正在研究java和MySQL。 我的实施如下:
import javax.swing.JFrame; import javax.swing.JLabel; import java.sql.*; import java.util.Scanner; public class BankingSystem extends JFrame { public static void main(String[] args) throws Exception{ int ur=0; int PIN; String ID; Scanner s=new Scanner(System.in); Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/BankingSystem"; String user = "root"; String pass=""; Connection con = DriverManager.getConnection(url,user,pass); Statement st = con.createStatement(); System.out.println("Enter Your 4 digit PIN"); PIN=s.nextInt(); ResultSet rs=st.executeQuery("select * from customerinformation where pin ="+PIN); //checking for existance of user entered pin if((rs.getString(1)).equals("")){System.out.println("Invalid PIN");} while(rs.next()) { System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)); } } }
但是这段代码不起作用。 给出某种exception错误,但当我删除包含if语句的行时,它工作正常。如何检查引脚是否有效。
它给出以下例外:
Exception in thread "main" java.sql.SQLException: Before start of result set at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:3624) at com.mysql.jdbc.ResultSet.getString(ResultSet.java:1762) at BankingSystem.main(BankingSystem.java:22)
尝试这种方式替换此Statement st = con.createStatement();
同
String query ="select * from customerinformation where pin =?" PreparedStatement st =con.prepareStatement("query"); st.setInt(1,PIN); ResultSet resultSet = st.executeQuery();
你永远不应该使用Statement over PreparedStatement
if (!resultSet.next() ) { System.out.println("resultset does not data"); } else { do { System.out.println(rs.getString(1)+" "+ rs.getString(2)+" "+ rs.getString(3)+" "+ rs.getString(4)); } while (resultSet.next()); }
if((rs.getString(1)).equals("")){ System.out.println("Invalid PIN"); }
没有rs.next()
, rs.getString(1)
是不可能的
尝试这个:
if(rs.next()){ System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)); } else { System.out.println("Invalid PIN"); }