我有2列的jtable然后我想将它的值插入数据库;
我知道可以用类似的东西来完成。
int count=table.getRowCount();
for(int i=0;i<count;i++){
Object obj1 = table.getValueAt(i, 0);
Object obj2 = table.getValueAt(i, 1);
问题是...... getRowCount不知道该行是否为空, 然后在数据库中,仍将插入该空值 (它将在数据库中生成我的自动增量值)
我的问题 如何从jtable插入数据库,但是不会插入空行?
非常感谢任何帮助,
如果我问得太多,请给我一个处理空行的线索,
原谅我的英语
这是将数据添加到数据库的破碎方法
public void addToDatabase(){
for (int i=0;i<table.getRowCount();i++){
//#####################################
//maybe need something in here
if(table.getValueAt(i, 0)==null||table.getValueAt(i, 1) ==null){
return;
//and maybe need something not return, but to get the next row (Just.. maybe ...)
//#####################################
}else{
try{
Connection c = getCon("databasez");
PreparedStatement p = c.prepareStatement("INSERT INTO table_data VALUES (?,?)");
p.setString(1, table.getValueAt(i, 0).toString());
p.setFloat (Float.parseFloat(table.getValueAt(i, 1).toString()));
p.executeUpdate();
p.close();
}catch(Exception e){
JOptionPane.showMessageDialog(this, "THERE WAS AN INVALID DATA");
}
}
}
}
答案 0 :(得分:1)
假设您使用的是DefaultTableModel
,getValueAt()
返回的结果将为null
,直到您修改相应的单元格。
您还可以注册一个TableModelListener
来接收一个可以告诉听众发生了哪些变化的TableModelEvent
。
private JTable table = new JTable(1, 2);
...
table.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
System.out.println(""
+ e.getType() + " "
+ e.getFirstRow() + " "
+ e.getLastRow() + " "
+ e.getColumn());
}
});
答案 1 :(得分:0)
也许它会对你有所帮助。 http://www.exampledepot.com/egs/javax.swing.table/InsertRow.html
首先,我在这里看到了getData方法,并且我没有看到你调用的insert或类似的方法,所以我认为代码与你所说的无关。
第二,你也可以学习搜索关于jtable的api。 如果你完全了解一个类的方法以及如何以一般方式使用它,我认为你理解并使用它很好。 这也可以提高你理解类似的东西。 如果不提出问题,你就会变得越来越强大,学习其他困难的东西。
这是我学习计划的好处。
答案 2 :(得分:0)
JAVA swing,SIMPLE WAY TO store jTable DATA in database
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) // swing Button
{
String name[] =new String[4]; // name is array and index 4 means no. of row
String age[]=new String[4]; //age is array and index 4 means no. of row
//loop from 0 row to 4
for(int i=0;i<4;i++)
{
name[i]=table.getValueAt(i,0).toString(); // it get value from 0 row and 0 column
age[i]=table.getValueAt(i,1).toString(); // it get value from 0 row and 1 column
//similarly for more column
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/crm","root","");
Statement s1=con.createStatement();
int mc=s1.executeUpdate("insert into testtable(Name,Age) values('"+name[i]+"','"+age[i]+"')");
}
catch(Exception ex)
{
javax.swing.JOptionPane.showMessageDialog(null,ex.getMessage().toString());
}
}