Java 将数据从数据库添加到自定义jtable
我试图将数据库添加到特定的列中,列始终是相同的,但行发生了变化。因此,我输入变量并尝试向数字中添加一个,但不幸运的是,所有打印都为0,因此没有向变量中添加任何数字,因此我的表保持在同一行,并且从不更改。我尝试I++;i=i+1;我只有println()上的0。我正在使用NetbeansJava 将数据从数据库添加到自定义jtable,java,swing,jtable,Java,Swing,Jtable,我试图将数据库添加到特定的列中,列始终是相同的,但行发生了变化。因此,我输入变量并尝试向数字中添加一个,但不幸运的是,所有打印都为0,因此没有向变量中添加任何数字,因此我的表保持在同一行,并且从不更改。我尝试I++;i=i+1;我只有println()上的0。我正在使用Netbeans Statement stmt = null; String sql="select * from gateway where date= "+id; try{ Con
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++;
}
在你的代码中
while(rs.next()) {
int i=0;
移动int i=0代码>到您的while循环之前
每次在您的代码中,此语句都会将i
重置回0
while(rs.next()) {
int i=0;
移动int i=0代码>到您的while循环之前
此语句每次都会将i
重置为0,因为每次while循环都会将i重置为0;before while()
因为每次while循环时i都被重置为0。
所以您应该将int i=0;before while()
不要使用setValueAt()方法。这意味着您已经用一堆包含空值的行加载了TableModel,这是一个糟糕的设计,因为您不知道查询将返回多少行
相反,您应该通过向循环中的模型添加新行来动态构建TableModel
有关使用DefaultTableModel的简单解决方案,请参见数据库示例中的表。不要使用setValueAt()方法。这意味着您已经用一堆包含空值的行加载了TableModel,这是一个糟糕的设计,因为您不知道查询将返回多少行
相反,您应该通过向循环中的模型添加新行来动态构建TableModel
有关使用DefaultTableModel的简单解决方案,请参阅,特别是数据库示例中的表。请尝试此代码。我使用字符串连接。此代码正在运行
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");
}
}
试试这个代码。我使用字符串连接。此代码正在运行
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");
}
}
1) 为了更快地获得更好的帮助,请发布一个。2) 对代码块使用一致的逻辑缩进。代码的缩进是为了帮助人们理解程序流程。1)为了更快地获得更好的帮助,请发布一篇文章。2) 对代码块使用一致的逻辑缩进。代码的缩进是为了帮助人们理解程序流程。这将拉动整个数据库列(不需要)。@gyuhh,然后不要使用“选择*”,或者只使用上面提供的基本代码从需要的列中获取数据。关键是构建向量并将行添加到模型中使用setValueAt(…)简直是一种糟糕的编码实践
。这将拉取整个数据库列(不需要)。@gyuhh,然后不要使用“select*”,或者只使用上面提供的基本代码从需要的列中获取数据。关键是构建向量并将行添加到模型中使用setValueAt(…)简直是一种糟糕的编码实践
。欢迎使用stackoverflow!:-)欢迎来到stackoverflow!:-)