Java 迭代表内容并有选择地插入/更新记录
这是我的第一个问题,我的问题是: 我在数据库中有一个8列的表(过期日期、公司、项目、类型、度量、金额、方框和数量) 在我的程序中,我有相同的8列,我想在表行上循环并更新(金额、方框和数量),如果(过期日期、公司、项目、类型和度量)已经存在,则插入新行。 这是代码,但不起作用Java 迭代表内容并有选择地插入/更新记录,java,loops,if-statement,sql-update,sql-insert,Java,Loops,If Statement,Sql Update,Sql Insert,这是我的第一个问题,我的问题是: 我在数据库中有一个8列的表(过期日期、公司、项目、类型、度量、金额、方框和数量) 在我的程序中,我有相同的8列,我想在表行上循环并更新(金额、方框和数量),如果(过期日期、公司、项目、类型和度量)已经存在,则插入新行。 这是代码,但不起作用 试试看{ String sel=“从数据中选择*”; 准备好的报表stt=con.准备好的报表(sel); ResultSet rs=stt.executeQuery(); 如果(rs.next()){ int row=t
试试看{
String sel=“从数据中选择*”;
准备好的报表stt=con.准备好的报表(sel);
ResultSet rs=stt.executeQuery();
如果(rs.next()){
int row=tbl.getRowCount();
对于(int i=0;i|
以什么方式不工作?你能给我们看一些输入示例、期望的输出和实际输出吗?我通过添加数据库和程序的图片更新了帖子。问题是数据库中没有任何操作,我看不到您在任何地方提交事务。尝试将
con.commit()
放在方法的末尾。我放了它,但也没有任何操作:(我尝试了这个,但它只插入不更新:
try {
String sel = "select * from DATA ";
PreparedStatement stt = con.prepareStatement(sel);
ResultSet rs = stt.executeQuery();
if(rs.next()){
int row = tbl.getRowCount();
for (int i = 0; i < row; i++) {
String dat = (String) tbl.getValueAt(i, 0);
String company = (String) tbl.getValueAt(i, 1);
String item = (String) tbl.getValueAt(i, 2);
String type = (String) tbl.getValueAt(i, 3);
String measure = (String) tbl.getValueAt(i, 4);
float box = (float) tbl.getValueAt(i, 5);
float amount = (float) tbl.getValueAt(i, 6);
float quantity = (float) tbl.getValueAt(i, 7);
String up = "update DATA set BOX= BOX +? , AMOUNT =AMOUNT +? ,QUANTITY =QUANTITY +? WHERE EXPIRATION_DATE='"+dat+"' and COMPANY='"+company+"' and ITEMS='"+item+"' and TYPEE='"+type+"' and MEASURE='"+measure+"' ";
PreparedStatement st = con.prepareStatement(up);
st.setObject(1, box );
st.setObject(2, amount);
st.setObject(3, quantity);
st.executeUpdate();
}
}else{
int row = tbl.getRowCount();
for (int i = 0; i < row; i++) {
String dat = (String) tbl.getValueAt(i, 0);
String company = (String) tbl.getValueAt(i, 1);
String item = (String) tbl.getValueAt(i, 2);
String type = (String) tbl.getValueAt(i, 3);
String measure = (String) tbl.getValueAt(i, 4);
float box = (float) tbl.getValueAt(i, 5);
float amount = (float) tbl.getValueAt(i, 6);
float quantity = (float) tbl.getValueAt(i, 7);
String in = "insert into DATA (EXPIRATION_DATE, COMPANY, ITEMS, TYPEE, MEASURE, BOX, AMOUNT, QUANTITY) values ( ?, ?, ?, ?, ?, ?, ?, ? )";
PreparedStatement stmt = con.prepareStatement(in);
stmt.setObject(1, dat);
stmt.setObject(2, company);
stmt.setObject (3, item );
stmt.setObject (4, type);
stmt.setObject (5, measure);
stmt.setFloat (6, box);
stmt.setFloat (7, amount);
stmt.setFloat (8, quantity);
stmt.executeUpdate();
}
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}