0

我正在尝试将数据库添加到特定列,行列始终相同,但行更改。所以我输入变量并尝试在数字上加一但不是运气所有打印都是 0 所以没有向变量添加任何数字,因为我的表保持在同一行并且永远不会改变。我试试 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

4 回答 4

2

在你的代码中

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

移动int i = 0;到你之前while loop

此语句将i每次重置回 0

于 2013-10-04T01:51:29.420 回答
1

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

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

请参阅数据库中的表,尤其是Table From Database Example使用 DefaultTableModel 的简单解决方案的代码。

于 2013-10-04T01:55:26.973 回答
1

试试这个代码。我使用字符串连接。此代码正在运行。

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");
 }

}  
于 2014-01-14T06:40:47.800 回答
0

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

int i=0;
while(rs.next()){
    ...
}
于 2013-10-04T01:54:33.907 回答