Java SQL 更新 各种问题,求dalao给看看

埃罗芒阿 2017-06-02 01:59:53
我是想要直接修改JTable的数据,然后传回到数据库更新保存,可是不知道为什么总是有问题,求dalao给看看
public void Save(String dbname,String table)
{
try{
Connection conn=getConnection(dbname);
PreparedStatement cour=null;
Object[][] data=new Object[8][8];
for(int i=0;i<Table().getRowCount();i++)
for(int j=0;j<Table().getColumnCount();j++)
{
data[i][j]=Table().getModel().getValueAt(i,j);
}
String sql="update "+table+" set time=?,Mon=?,Tues=?,Wed=?,Thur=?,Fri=?,Sat=?,Sun=?";
cour=conn.prepareStatement(sql);
// for(int i=0;i<8;i++)
// for(int j=0;j<8;j++)
// {
// System.out.print(data[i][j]);
// }

for(int i=0;i<8;i++)
{
//String sql="update "+table+" set time=?,Mon=?,Tues=?,Wed=?,Thur=?,Fri=?,Sat=?,Sun=?";
//cour=conn.prepareStatement(sql);

cour.setObject(1,data[i][0]);
cour.setObject(2,data[i][1]);
cour.setObject(3,data[i][2]);
cour.setObject(4,data[i][3]);
cour.setObject(5,data[i][4]);
cour.setObject(6,data[i][5]);
cour.setObject(7,data[i][6]);
cour.setObject(8,data[i][7]);

//cour=conn.prepareStatement(sql);
//cour.executeUpdate();

}
//cour=conn.prepareStatement(sql);
cour.executeUpdate();
conn.close();
cour.close();
}catch(SQLException e){
e.printStackTrace();
}
}


...全文
189 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
埃罗芒阿 2017-06-04
  • 打赏
  • 举报
回复
引用 4 楼 a350062174的回复:
[quote=引用 3 楼 qq_38961818 的回复:] [quote=引用 2 楼 a350062174的回复:]通过 prepareStatement 的addbatch来实现批量执行脚本 在cour.setObject(8,data[i][7]); 下面加上 cour.addBatch(); 将 cour.executeUpdate(); 改成cour.executeBatch();
还是不行啊,不能保存到数据库,也没报错,是不是哪行代码的位置问题[/quote] conn.close(); cour.close(); 这两行改下试试: conn.commit(); cour.close(); conn.close();//最后关连接[/quote] 还有个问题啊,为什么我每次更新都只更新最后一行的数据,所有列的值都一样
a350062174 2017-06-03
  • 打赏
  • 举报
回复
引用 3 楼 qq_38961818 的回复:
[quote=引用 2 楼 a350062174的回复:]通过 prepareStatement 的addbatch来实现批量执行脚本 在cour.setObject(8,data[i][7]); 下面加上 cour.addBatch(); 将 cour.executeUpdate(); 改成cour.executeBatch();
还是不行啊,不能保存到数据库,也没报错,是不是哪行代码的位置问题[/quote] conn.close(); cour.close(); 这两行改下试试: conn.commit(); cour.close(); conn.close();//最后关连接
埃罗芒阿 2017-06-03
  • 打赏
  • 举报
回复
引用 4 楼 a350062174的回复:
[quote=引用 3 楼 qq_38961818 的回复:] [quote=引用 2 楼 a350062174的回复:]通过 prepareStatement 的addbatch来实现批量执行脚本 在cour.setObject(8,data[i][7]); 下面加上 cour.addBatch(); 将 cour.executeUpdate(); 改成cour.executeBatch();
还是不行啊,不能保存到数据库,也没报错,是不是哪行代码的位置问题[/quote] conn.close(); cour.close(); 这两行改下试试: conn.commit(); cour.close(); conn.close();//最后关连接[/quote] 我发现好像是DefaultTableModel的锅,用这个是不是不能保存编辑的数据,我试过不能直接获取单元格修改后的值
埃罗芒阿 2017-06-02
  • 打赏
  • 举报
回复
引用 2 楼 a350062174的回复:
通过 prepareStatement 的addbatch来实现批量执行脚本 在cour.setObject(8,data[i][7]); 下面加上 cour.addBatch(); 将 cour.executeUpdate(); 改成cour.executeBatch();
还是不行啊,不能保存到数据库,也没报错,是不是哪行代码的位置问题
a350062174 2017-06-02
  • 打赏
  • 举报
回复
通过 prepareStatement 的addbatch来实现批量执行脚本 在cour.setObject(8,data[i][7]); 下面加上 cour.addBatch(); 将 cour.executeUpdate(); 改成cour.executeBatch();

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧