Try this
Use DefaultTableModel if you are not
if(ae.getSource()==update){
int row=table.getSelectedRow();
int n=JOptionPane.showConfirmDialog(mainPanel, "Would you like to update the record?", "Confirm", JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
try{
Connection con=null;
Statement st=null;
ResultSet rs=null;
ResultSet rs1=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url=null,userID=null,password=null;
String dbFileName=null;
String sql=null;
dbFileName = "C:/db.accdb";
url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};"+
"DBQ="+dbFileName+";";
//sql = "SELECT * FROM tblUserProfile";
con=DriverManager.getConnection(url);//,"system","manager"
//con=DriverManager.getConnection("jdbc:odbc:shop");
st=con.createStatement();
rs=st.executeQuery("select * from Credit where TID="+table4.getValueAt(row, 3));
if(rs.next()){
s1=rs.getString(1);
s2=rs.getString(2);//accounno
s3=rs.getString(3);//name
s4=rs.getString(4);
s5=rs.getString(5);//paid
s6=rs.getString(6);//unpaid
}
PreparedStatement smt=con.prepareStatement("select * from Debit where Name=?");
smt.setObject(1, s3);
rs=smt.executeQuery();
if(rs.next()){
u1=rs.getString(1);
u2=rs.getString(2);
u3=rs.getString(3);
u4=rs.getString(4);
u5=rs.getString(5);
u6=rs.getString(6);//unpaid
}
st.executeUpdate("delete from Credit where TID="+table4.getValueAt(row,3));
st.executeUpdate("delete from Debit where Name='"+s3+"'");
tid=Integer.parseInt(table4.getValueAt(row, 3).toString());
date=table.getValueAt(row, 0).toString();
jama=table.getValueAt(row, 1).toString();//s5
baki=table.getValueAt(row, 2).toString();//s6
nett=table4.getValueAt(row, 4).toString();
rs1=st.executeQuery("select * from NettDate where Name='"+s3+"'");
while(rs1.next()){
nettdate=rs1.getString(2);
nettbal=rs1.getString(3);
}
String tpaid=Integer.toString(Integer.parseInt(s5)-Integer.parseInt(jama));
String tunpaid=Integer.toString(Integer.parseInt(s6)-Integer.parseInt(baki));
if(u6.contains("-")){
System.out.println("Contains -");
if(tpaid.contains("-")&tunpaid.contains("-")){
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("1-"+tupdate);
}else if(!tpaid.contains("-")&tunpaid.contains("-")){
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("2-"+tupdate);}
else if(tpaid.contains("-")&!tunpaid.contains("-")){
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("3-"+tupdate);
}else{
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("4-"+tupdate);
}
}else{
System.out.println("Not Contains -");
if(tpaid.contains("-")&tunpaid.contains("-")){
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("1"+tupdate);
}else if(!tpaid.contains("-")&tunpaid.contains("-")){
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("2"+tupdate);}
else if(tpaid.contains("-")&!tunpaid.contains("-")){
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("3"+tupdate);
}else{
tupdate=Integer.toString(Integer.parseInt(u6)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
nettb=Integer.toString(Integer.parseInt(nettbal)+Integer.parseInt(tpaid)-Integer.parseInt(tunpaid));
System.out.println("4"+tupdate);
}
}
// tupdate=Integer.toString(Integer.parseInt(a)+Integer.parseInt(paid)-Integer.parseInt(unpaid));
// }else{
// tupdate=Integer.toString(Integer.parseInt(a)-Integer.parseInt(paid)+Integer.parseInt(unpaid));
// }
int i=st.executeUpdate("insert into Credit values("+tid+",'"+s2+"','"+s3+"','"+date+"','"+jama+"','"+baki+"','"+nett+"')");
st.executeUpdate("insert into Debit values('"+s2+"','"+s3+"','"+u3+"','"+u4+"','"+date+"','"+tupdate+"')");
//if(Integer.parseInt(table.getValueAt(row, 4).toString())==1){
if(Integer.parseInt(table4.getValueAt(row, 4).toString())==1){
st.executeUpdate("delete from NettDate where Name='"+s3+"'");
st.executeUpdate("insert into NettDate values('"+s3+"','"+date+"','"+nettb+"')");
}
if(i==0){
String msg="Record not updated Successfully";
String ss="Sorry..........";
int res=JOptionPane.PLAIN_MESSAGE;
JOptionPane.showMessageDialog((Component) null,msg,ss,res);
}else{
String msg="Record updated Successfully";
String ss="Congratlations..........";
int res=JOptionPane.PLAIN_MESSAGE;
JOptionPane.showMessageDialog((Component) null,msg,ss,res);
//dispose();
}
jComboBox.requestFocusInWindow();
model.setRowCount(0);
model1.setRowCount(0);
model2.setRowCount(0);
b=0;
a=0;
tj="0";
tb="0";
t=0;
gt="0";
an="0";nam="0";mono="0";cit="0";
DBEngine dbengine = new DBEngine();
data = dbengine.getJamaCustomer(s3);
Object[] d3={data1.get(0).get(0),data1.get(0).get(1),data1.get(0).get(3),data1.get(0).get(4)};
model1.addRow(d3);
JTable table5=new JTable(data,header3);
for(int i2=0;i2<table5.getRowCount();i2++){
Object[] d={data.get(i2).get(0),data.get(i2).get(1),data.get(i2).get(2),data.get(i2).get(3),data.get(i2).get(4)};
model2.addRow(d);
}
JTable table1=new JTable(data,header);
for(int i1=0;i1<table1.getRowCount();i1++){
Object[] d={data.get(i1).get(0),data.get(i1).get(1),data.get(i1).get(2)};//,data.get(i).get(3),data.get(i).get(4)};
model.addRow(d);
}
for(int i2=0;i2<table1.getRowCount();i2++){
a=a+Integer.parseInt(data.get(i2).get(1));
b=b+Integer.parseInt(data.get(i2).get(2));
}
tj=Integer.toString(a);
tb=Integer.toString(b);
Object[] d1={"Total",tj,tb};//,"",""};
Object[] d11={"Total",tj,tb,"",""};
model.addRow(d1);
model2.addRow(d11);
t=Integer.parseInt(tb)-Integer.parseInt(tj);
gt=Integer.toString(t);
Object[] d2={"Nett Balance","",gt};//,"",""};
Object[] d21={"Nett Balance","",gt,"",""};
model.addRow(d2);
model2.addRow(d21);
jlab7.setText(gt);
tablePanel.repaint();
con.close();
} catch (ClassNotFoundException ex) {
Logger.getLogger(ManageCustomer.class.getName()).log(Level.SEVERE, null, ex);
}catch(Exception err){
System.out.println("GG Yes"+err);
}
} else if (n == JOptionPane.NO_OPTION) {
try {
Connection con=null;
Statement st=null;
ResultSet rs=null;
// ResultSet rs1=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url=null,userID=null,password=null;
String dbFileName=null;
String sql=null;
dbFileName = "C:/Program Files/Shop/shop.accdb";
//userID = "Admin";
password = "3064101991";
url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};"+
"DBQ="+dbFileName+";"+
"Pwd="+password+";";
//sql = "SELECT * FROM tblUserProfile";
con=DriverManager.getConnection(url);//,"system","manager"
st = con.createStatement();
//rs=st.executeQuery("select * from Credit where TID="+table.getValueAt(row, 0));
rs=st.executeQuery("select * from Credit where TID="+table4.getValueAt(row, 3));
if(rs.next()){
s1=rs.getString(1);
s2=rs.getString(2);//accounno
s3=rs.getString(3);//name
s4=rs.getString(4);
s5=rs.getString(5);//paid
s6=rs.getString(6);//unpaid
}
model.setRowCount(0);
model1.setRowCount(0);
model2.setRowCount(0);
b=0;
a=0;
tj="0";
tb="0";
t=0;
gt="0";
an="0";nam="0";mono="0";cit="0";
DBEngine dbengine = new DBEngine();
data = dbengine.getJamaCustomer(s3);
Object[] d3={data1.get(0).get(0),data1.get(0).get(1),data1.get(0).get(3),data1.get(0).get(4)};
model1.addRow(d3);
JTable table5=new JTable(data,header3);
for(int i2=0;i2<table5.getRowCount();i2++){
Object[] d={data.get(i2).get(0),data.get(i2).get(1),data.get(i2).get(2),data.get(i2).get(3),data.get(i2).get(4)};
model2.addRow(d);
}
JTable table1=new JTable(data,header);
for(int i1=0;i1<table1.getRowCount();i1++){
Object[] d={data.get(i1).get(0),data.get(i1).get(1),data.get(i1).get(2)};//,data.get(i).get(3),data.get(i).get(4)};
model.addRow(d);
}
for(int i2=0;i2<table1.getRowCount();i2++){
a=a+Integer.parseInt(data.get(i2).get(1));
b=b+Integer.parseInt(data.get(i2).get(2));
}
tj=Integer.toString(a);
tb=Integer.toString(b);
Object[] d1={"Total",tj,tb};//,"",""};
Object[] d11={"Total",tj,tb,"",""};
model.addRow(d1);
model2.addRow(d11);
t=Integer.parseInt(tb)-Integer.parseInt(tj);
gt=Integer.toString(t);
Object[] d2={"Nett Balance","",gt};//,"",""};
Object[] d21={"Nett Balance","",gt,"",""};
model.addRow(d2);
model2.addRow(d21);
jlab7.setText(gt);
tablePanel.repaint();
jComboBox.requestFocusInWindow();
// rs=st.executeQuery("select TID,Date,Paid,Unpaid,Nett from Credit where Name='"+s3+"' order by Date");
// table.setModel(buildTableModel(rs));
con.close();
//pstmt.close();
JOptionPane.showMessageDialog((Component) null,"You choose not to update the data !");
}catch (ClassNotFoundException err) {
// System.out.println(e);
err.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
System.out.println(ex);
}
}
}//end btn1
public Vector getJamaCustomer(Object name)throws Exception
{
Vector<Vector<String>> jamacustomerVector = new Vector<Vector<String>>();
Connection conn = dbConnection();
PreparedStatement pre = conn.prepareStatement("select * from Credit where Name='"+name+"' order by TID");
ResultSet rs = pre.executeQuery();//
while(rs.next())
{
Vector<String> jamacustomer = new Vector<String>();
//jamacustomer.add(rs.getString(2)); //Empid
jamacustomer.add(rs.getString(4)); //Empid
jamacustomer.add(rs.getString(5)); //Empid
jamacustomer.add(rs.getString(6)); //Empid
jamacustomer.add(rs.getString(1)); //Empid
jamacustomer.add(rs.getString(7)); //Empid
jamacustomerVector.add(jamacustomer);
}
/*Close the connection after use (MUST)*/
if(conn!=null)
conn.close();
return jamacustomerVector;
//return bakicustomerVector;
}
'如何在JTable中編輯的行後更改數據模型' - ?你沒有做什麼特別的。編輯完單元后,編輯器將更新TableModel。你爲什麼要創建一個自定義TableModel。你可以使用DefaultTableModel。您可以使用2D陣列創建模型。 – camickr
你有兩個選擇。在調用'setValueAt'方法時更新數據庫,或者更改'TableModel'的監聽器。就個人而言,第一種方法更簡單... – MadProgrammer