Posted Wednesday, April 16, 2008 @ 06:27:43
Hi,
when inserting a new vector in the table, qt immediatly do the "insert" with null value.
it's working when using insert(vector) instead of insert(vector,0)
to help you, here's the code with your example
Thanks and have a nice day
import javax.swing.*;
import quick.dbtable.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.*;
import java.util.Vector;
public class QuickTableFrame extends JFrame {
quick.dbtable.DBTable dBTable1 = new quick.dbtable.DBTable();
public QuickTableFrame() {
// set Frame properties
setSize(500, 500);
setVisible(true);
JPanel jpan=new JPanel();
JButton bCommit=new JButton("Commit MySelf");
JButton bRefresh=new JButton("Refresh");
JButton bInsert=new JButton("insert");
// add to frame
getContentPane().setLayout(new BorderLayout());
getContentPane().add(dBTable1,BorderLayout.CENTER);
jpan.add(bCommit);
jpan.add(bRefresh);
jpan.add(bInsert);
getContentPane().add(jpan,BorderLayout.SOUTH);
// set the database driver to be used, we are using jdbc-odbc driver
dBTable1.setDatabaseDriver("sun.jdbc.odbc.JdbcOdbcDriver");
bInsert.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
Vector v = new Vector();
v.addElement("");
v.addElement("");
v.addElement("");
dBTable1.insert(v,0);
}
});
bRefresh.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
try
{
dBTable1.refresh();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
bCommit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
dBTable1.save();
try
{
dBTable1.getConnection().commit();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
/*
* set the jdbc url,"quicktabledemo" is the data source we have created
* for the database
*/
dBTable1.debug=true;
dBTable1.setJdbcUrl("jdbc:odbc:quicktabledemo");
dBTable1.postponeDBInsert = true;
dBTable1.autoCommit = false;
// set the select statement which should be used by the table
dBTable1.setSelectSql("SELECT Employee.Emp_Number, Employee.Emp_Name, " +
"Employee_status.Emp_Status " +
"FROM Employee , Employee_status " +
"WHERE Employee.Emp_Number = Employee_status.Emp_no");
//since 2 tables are involved in the above query , we need to add 2 update statements
dBTable1.addUpdateSql("update Employee set emp_name =? where emp_number =?", "2,1");
dBTable1.addUpdateSql("update Employee_status set emp_status=? where emp_no=?", "3,1");
//Add the insert statements
dBTable1.addInsertSql("insert into Employee (emp_number, emp_name) values (?,?)", "1,2");
dBTable1.addInsertSql("insert into employee_status (emp_no, emp_status) values (?, ?)", "1,3");
//Add delete statements
dBTable1.addDeleteSql("delete from Employee where emp_number = ?", "1");
dBTable1.addDeleteSql("delete from Employee_status where emp_no = ?", "1");
// to create the navigation bars for the table
dBTable1.createControlPanel();
dBTable1.getTable().setSurrendersFocusOnKeystroke(true);
dBTable1.enableTextOverwriteOnCellEdit = true;
try
{
//set database properties
dBTable1.connectDatabase();
//fetch the data from database to fill the table
dBTable1.refresh();
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
//some jdbc drivers don't give the correct meta data for editable property of a column
dBTable1.getColumn(0).setReadOnly(false);
dBTable1.getColumn(1).setReadOnly(false);
dBTable1.getColumn(2).setReadOnly(false);
}
public static void main(String[] args) {
// create a new table frame
QuickTableFrame myframe = new QuickTableFrame();
}
}