2012-09-03 64 views
0

我有一个关于我的JTable的问题,我不知道如何将我的数据库中的String类型的读取记录存储到多维数组中,比如Object [] [] data 。我想要做的是向JTable显示我的数据库记录,我已经在dtabase中获取记录并将其存储在我的字符串变量中。问题是如何将提取记录存储到Object的多维数组中,并将其用于我JTable中。来自数据库的Java JTable结果

这里是我用来获取记录代码:

static class TableData{ 
    Object[][] data; 
    int count = 0; 
    Statement sql = null; 
    String query, user = "JEROME", pass = "Perbert101", driver = "oracle.jdbc.OracleDriver", conString = "jdbc:oracle:thin:@127.0.0.1:1521:XE"; 
    Connection con = null; 
    ResultSet rs = null; 
    TableData(){ 
     try{ 
      Class.forName(driver); 
     } 
     catch(ClassNotFoundException e){ 
      JOptionPane.showMessageDialog(null, "Problem Loading Driver"); 
     } 
     try{ 
      con = DriverManager.getConnection(conString, user, pass); 
      sql = con.createStatement(); 
      sql.executeQuery("SELECT * FROM INVENTORY"); 
      rs = sql.getResultSet(); 
      int key = 0; 
      String val = null, val1 = null, val2 = null, val3 = null, val4 = null, val5 = null; 
      System.out.println("Results: "); 
      while(rs.next()){ 


        key = rs.getInt(1); 
        if(rs.wasNull()){ 
         key = -1; 
        } 
        val = rs.getString(2); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val1 = rs.getString(3); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val2 = rs.getString(4); 
        if(rs.wasNull()){ 
         val = null; 
        } 

        val3 = rs.getString(5); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val4 = rs.getString(6); 
        if(rs.wasNull()){ 
         val = null; 
        } 
        val5 = rs.getString(7); 
        if(rs.wasNull()){ 
         val = null; 
        } 

       System.out.println("Key = " + key); 
       System.out.println("value = " + val); 
       System.out.println("value = " + val1); 
       System.out.println("value = " + val2); 
       System.out.println("value = " + val3); 
       System.out.println("value = " + val4); 
       System.out.println("value = " + val5); 

      } 


      sql.close(); 
      con.close(); 
     } 
     catch(SQLException e){ 
      JOptionPane.showMessageDialog(null, "Error Loading Database Data"); 
     } 

    } 
} 
//----------END------------ 
public static void main(String[] args){ 
    POSModel.TableData data = new POSModel.TableData(); 
} 
+0

你可能想接受一些答案... –

+0

是的,我是在Java上noob,它需要我约1小时学习如何获得一些记录,可以你帮我?我现在真的需要这个。 – Zyrax

回答

1

我建议你从数据库中提取数据需要被存储在数组(按列)第一...

Object[] rowData = new Object[7]; 
rowData[0] = key; 
rowData[1] = val; 
rowData[2] = val1; 
rowData[3] = val2; 
rowData[4] = val3; 
rowData[5] = val4; 
rowData[6] = val5; 

然后这需要存储在某种行结构中,我会亲自使用一个List。这个选择的主要原因是,你可能不知道提前行,你会读的次数......

List<Object[]> rowList = new ArrayList<Object[]>(25); 

// Process the resultset... 
// Create the column array from above... 

rowList.add(rowData); 

一旦你完成阅读完所有的行,你需要转换列表一个数组...

data = rowList.toArray(new Object[](rowList.size())); // I like to provide my own array 

同样,你可以做...

data = new Object[rowList.size()][7]; 
rowList.toArray(data); 

而且,任何更方便......

现在你应该有一个二维阵列...

+0

我怎样才能循环多维数组?这样我就不需要输入所有的抓取记录。 – Zyrax

+0

列首先为什么?我的意思是它应该是网格格式。 – Zyrax

+0

对不起...输入密钥的方式:P - 请参阅更新... – MadProgrammer