2013-10-04 98 views
0

我想将数据库添加到特定的列,列的行总是相同,但行更改。所以我输入变量,并试图添加一个数字,但没有运气,所有打印都是0,所以没有向该变量添加任何数字,因此我的表保持在同一行,并永不改变。我尝试i ++; I = I + 1;我所有的println()上都是0。我使用Netbeans。将数据从数据库添加到自定义jtable

 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++; 
     } 
+1

1)为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 2)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。 –

回答

0

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

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

在你的代码

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

int i = 0;之前你while loop

本声明将重置i回0每次

1

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

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

参见Table From Database,特别是Table From Database Example代码对于使用的DefaultTableModel一个简单的解决方案。

+0

这将拉动整个数据库列(不需要它)。 – gyuhh

+1

@gyuhh,然后不要使用“select *”,或者只使用上面提供的基本代码从需要的列中获取数据。重点是构建Vector并将该行添加到模型中。 '使用setValueAt(...)只是一个糟糕的编码习惯。 – camickr

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

} 
+0

欢迎使用stackoverflow! :-) – Pureferret

相关问题