如何从jtable插入数据库?
Posted
技术标签:
【中文标题】如何从jtable插入数据库?【英文标题】:how to insert database from jtable? 【发布时间】:2012-10-25 09:44:23 【问题描述】:我有 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");
【问题讨论】:
【参考方案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());
);
【讨论】:
非常感谢您的回复..我每天都在想它,使用表模型侦听器来知道哪一行是有价值的..然后获取所有行有一个值可以插入数据库..它对我来说很复杂..但也许另一个不会觉得复杂。谢谢你的回答 有点复杂但是非常灵活。考虑打开一个 modal 对话框来收集数据以插入新行;收听TableModel
的更新;使用checkboxes 标记要删除的行等。
是的。已经使用了很多jdialog))..但是,最后..我完全按照你说的来使用..谢谢老兄..【参考方案2】:
也许它会帮助你。 http://www.exampledepot.com/egs/javax.swing.table/InsertRow.html
首先,我在这里只看到了 getData 方法,没有看到您调用的 insert 或类似方法,所以我认为代码与您所说的无关。
其次,你也可以学习搜索关于jtable的api。 如果您完全了解一个类的方法以及如何在一般情况下使用它,我认为您理解和使用它非常好。 这也可以提高您对类似事物的理解。 并且您将变得越来越强大,无需提问即可学习其他困难的东西。
这是我学习程序的选择。
【讨论】:
对不起很久了..我的地方停电了..(我需要搬到另一个地方T-T)对不起代码(我的坏〜,〜)..我已经改变了代码并添加我损坏的方法..【参考方案3】: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());
【讨论】:
以上是关于如何从jtable插入数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据(实际上是 Jtable 数据)添加到数据库中。有没有办法使用preparedstmt将对象插入数据库?
从java程序中向oracle中插入数据,为啥插入顺序总是不对