将数据从数据库添加到自定义jtable

时间:2013-10-04 01:48:50

标签: java swing jtable

我正在尝试将数据库添加到特定列,列的行总是相同但行更改。所以我输入变量并尝试在数字中添加一个而不是运气所有打印都是0因此不是为变量添加任何数字因为我的表保持在同一行并且永远不会改变。我试试i ++; I = I + 1;我所拥有的只是println()上的0。我正在使用Netbeans。

     Statement stmt = null;
      String sql="select * from gateway where date= "+id;
      try{
      Connect conn=new Connect();
      stmt = conn.makeStatement();        
       rs = stmt.executeQuery(sql);            
        while(rs.next()) {
            int i=0;
            Object ids = rs.getString("Business");
            Object items = rs.getString("GatewayJob");
            Object descriptions = rs.getString("Status");
            Object quantitys = rs.getString("Timework");
            Object price = rs.getString("Notes");      

            jTable1.getModel().setValueAt(ids,i, 0 );
            jTable1.getModel().setValueAt(items, i, 1);
            jTable1.getModel().setValueAt(descriptions, i, 2);
           jTable1.getModel().setValueAt(quantitys, i, 3);
          jTable1.getModel().setValueAt(price, i, 4);              
          System.out.println(i);
        i++;
        }

4 个答案:

答案 0 :(得分:2)

在你的代码中

while(rs.next()) {
            int i=0;

int i = 0;移至while loop

之前

此语句将每次将i重置为0

答案 1 :(得分:1)

不要使用setValueAt()方法。这意味着您已经使用包含空值的一堆行加载了TableModel,这是一个糟糕的设计,因为您不知道查询将返回多少行。

相反,您应该通过向循环中的模型添加新行来动态构建TableModel。

有关使用DefaultTableModel的简单解决方案,请参阅Table From Database,尤其是Table From Database Example代码。

答案 2 :(得分:1)

试试这段代码。即时通讯使用String连接。这些代码正在运行。

String sql = "select * from tblstudent";

try{

database.Query(sql);

int inc=0;

while(database.dataTable.next()){

         Object a = database.dataTable.getInt("StudentID");
         Object b = database.dataTable.getString("Firstname");
         Object c = database.dataTable.getString("Lastname");
         Object d = database.dataTable.getString("Gender");
         Object e = database.dataTable.getInt("CourseID");

         tblStudent.getModel().setValueAt(a, inc, 0 );
         tblStudent.getModel().setValueAt(b, inc, 1);
         tblStudent.getModel().setValueAt(c, inc, 2);
         tblStudent.getModel().setValueAt(d, inc, 3);
         tblStudent.getModel().setValueAt(e, inc, 4);              

         inc++;
     }
 }
catch(SQLException ex){
     JOptionPane.showMessageDialog(null, "Error");
 }

}  

答案 3 :(得分:0)

因为 i 每次循环都会重置为0。所以你应该把int i = 0;在while()之前。

int i=0;
while(rs.next()){
    ...
}