2014-05-04 54 views
1
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.PrintWriter; 
import java.sql.*; 
import java.net.*; 

public class connection { 
    JTextField textfeild; 
    JButton button; 
    String text; 
    Socket sock; 
    PrintWriter writer; 
    JButton button1; 

    public static void main(String[] args) { 
     connection user1 = new connection(); 
     user1.go(); 
    }//main method close 

    public void go() { 
     JFrame frame12 = new JFrame(); 
     JPanel centerpanel12 = new JPanel(); 
     centerpanel12.setLayout(new BoxLayout(centerpanel12, BoxLayout.Y_AXIS)); 
     textfeild = new JTextField(20); 
     centerpanel12.add(textfeild); 
     //textfeild.addActionListener(new textfeildlitner()); 
     frame12.add(centerpanel12); 
     button = new JButton("Click Me"); 
     centerpanel12.add(button); 
     button.addActionListener(new buttonlitner()); 
     button1 = new JButton("DataDisplay"); 
     centerpanel12.add(button1); 
     button1.addActionListener(new buttonlitner1()); 

     frame12.getContentPane().add(BorderLayout.CENTER, centerpanel12); 
     frame12.pack(); 
     frame12.setVisible(true); 
     frame12.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }//go method close 

     /*class textfeildlitner implements ActionListener{ 
      public void actionPerformed(ActionEvent ev){ 

      } 
     }//inner class textfeildlitner close*/ 

    class buttonlitner implements ActionListener { 
     public void actionPerformed(ActionEvent ev) { 
      button.setText("I AM Clicked"); 
      String name = textfeild.getText(); 
      System.out.println(name); 
      textfeild.setText(""); 
      textfeild.requestFocus(); 
     }//method close 
    }//inner class close 


    class buttonlitner1 implements ActionListener { 
     void connection() { 
      try { 
       String user = "SQlUI"; 
       String pass = "123456"; 
       String db = "jdbc:sqlserver://localhost:1234;" + ";databaseName=SQlUI"; 
       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
       Connection con = DriverManager.getConnection(db, user, pass); 
       Statement s1 = con.createStatement(); 
       ResultSet r1 = s1.executeQuery("select * from Table_1"); 
       String[] result = new String[20]; 
       if (r1 != null) { 
        while (r1.next()) { 
         for (int i = 0; i < result.length; i++) { 
          for (int j = 0; j < result.length; j++) { 
           result[j] = r1.getString(i); 
           System.out.println(result[j]); 
           break; 
          }//for j close 
         }//for i close 
        }//if closeclose 
       }//try close 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      }//catch close 
     }//connection() close  

     public void actionPerformed(ActionEvent ev) { 
      button1.setText("Processing"); 
      new buttonlitner1().connection(); 
     }//method close 
    }//inner class close 
}//outer class close 

和我得到這個異常代碼 -什麼(com.microsoft.sqlserver.jdbc.SQLServerException:索引0越界)異常意味着

com.microsoft.sqlserver.jdbc.SQLServerException: The index 0 is out of range. 
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190) 
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyValidColumnIndex(SQLServerResultSet.java:531) 
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(SQLServerResultSet.java:2049) 
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2082) 
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2067) 
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(SQLServerResultSet.java:2392) 
    at connection$buttonlitner1.connection(connection.java:76) 
    at connection$buttonlitner1.actionPerformed(connection.java:89) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

當我改變i的值從0到1,然後它顯示第一行的結果,但同樣會拋出異常,表示索引3超出範圍。 我已經發布了相同的代碼,並進行了更改(按照stackoverflow上的專家建議)後,它給了我一種新的異常。 我把前一個問題的鏈接Getting Checked Exception while running a SQL Program和問題是在運行SQL程序時出現檢查異常

+1

'Table_1'中有多少列? – lakshman

+1

@lakhman Table_1有2列和9行 –

+1

那麼你的外循環應該是'for(int i = 1; i <3; i ++)'。由於結果數組長度爲20,因此它會嘗試從表中訪問20列,但是您有2列表。這就是爲什麼你得到指數超出範圍 – lakshman

回答

3

在SQL中(與通常在Java中不同)evrything從1開始索引 - 行和列。

爲什麼你的r1.next()循環中有2個循環?

認爲你的代碼

for (int j = 0; j < result.length; j++) { 
    result[j] = r1.getString(i); 
    System.out.println(result[j]); 
    break; 
} 

實際上做。

+1

先生其實我分配給我的outerloop錯誤的條件這就是爲什麼我得到這些例外。現在回答你的問題是 - 第一個for循環從我想要獲取數據的列中取出列,第二個循環存儲數據並最終打印它。在第一個循環中(int i = 0; i