2016-01-12 12 views
1

我有在MS Access數據庫檢查該用戶名的麻煩數據庫麻煩數據庫和檢查在java中

java.sql.SQLException: No data found 

這裏是連接數據庫

public class dbAccess 
{ 
    Connection conn; 
    ResultSet rs; 
    Statement s; 
    PreparedStatement ps; 
    public void doConnect() 
    { 
     try 
     { 
      String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
      Class.forName(driver); 
      String login = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=E:\\File Kuliah\\Semester 7\\AOOP\\JavaApplication1\\build\\classes\\Database1.accdb"; 
      conn = DriverManager.getConnection(login); 
      System.out.println("Connected"); 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 
} 

這裏是代碼有錯誤

private void registerButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    try 
     { 
       db.ps = db.conn.prepareStatement("SELECT * FROM DatabaseAOOP"); 
       db.rs = db.ps.executeQuery(); 
       System.out.print("1"); 
       while(db.rs.next()) 
       { 
        if(userRegis.getText().equals(db.rs.getString("username"))) 
        { 
         System.out.print("3"); 
         JOptionPane.showMessageDialog(this, "Username is already exists !"); 
         userRegis.setText(""); 
         passRegis.setText(""); 
         //db.rs=null; 
         //db.ps=null; 
         break; 

        } 
        else if(userRegis.getText().isEmpty()) 
        { 
         JOptionPane.showMessageDialog(this, "Please input the name"); 
        } 
        else if(!userRegis.getText().equals(db.rs.getString("username"))) 
        { 
          JOptionPane.showMessageDialog(this, "Searching ..."); 
        } 
        else 
        { 
         System.out.print("2"); 
         db.ps = db.conn.prepareStatement("INSERT INTO DatabaseAOOP(username,password) VALUES(?,?)"); 
         db.s = db.conn.createStatement(); 
         db.ps.setString(1, userRegis.getText()); 
         db.ps.setString(2, passRegis.getText()); 
         db.ps.executeUpdate(); 
         JOptionPane.showMessageDialog(this, "Thank you for registering !"); 
         userRegis.setText(""); 
         passRegis.setText(""); 
         break; 
        } 
       } 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
      System.out.println(ex); 

     }  
} 

這裏是的printStackTrace

at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3914) 
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697) 
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353) 
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:410) 
at Frame.registerButtonActionPerformed(Frame.java:277) 
at Frame.access$600(Frame.java:4) 
at Frame$7.actionPerformed(Frame.java:135) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6516) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320) 
at java.awt.Component.processEvent(Component.java:6281) 
at java.awt.Container.processEvent(Container.java:2229) 
at java.awt.Component.dispatchEventImpl(Component.java:4872) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
at java.awt.Container.dispatchEventImpl(Container.java:2273) 
at java.awt.Window.dispatchEventImpl(Window.java:2719) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) 
at java.awt.EventQueue.access$200(EventQueue.java:103) 
at java.awt.EventQueue$3.run(EventQueue.java:694) 
at java.awt.EventQueue$3.run(EventQueue.java:692) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:708) 
at java.awt.EventQueue$4.run(EventQueue.java:706) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

其實我只是檢查連接數據庫,但沒有找到數據

回答

0

在您再次調用db.rs.getString("username")循環後進入while(db.rs.next())循環調用db.rs.getString("username"),然後後即可。這是引發「找不到數據」異常的第二次調用。

在許多情況下,JDBC只允許我們針對ResultSet中的給定(當前)行每列調用一次get...方法。您應該將該值保存爲字符串

String theUserName = db.rs.getString("username"); 

然後使用字符串變量進行(多個)比較。

+0

我只是將其更改爲字符串theUserName,但現在我得到了這個錯誤java.sql.SQLException:[微軟] [ODBC驅動程序管理器]無效的光標狀態 – rinaldy31

+0

沒關係,它的工作..謝謝你這麼多先生 – rinaldy31