JTable中显示数据库信息



JTable中显示数据库信息

1://一.新建一表格视图(MVC的View)

JTable JTableView = new JTable();
2://二.新建一表格模板(MVC的Model)
DefaultTableModel JTableModel = new DefaultTableModel();
3://三.新建createTableModel()方法
private void createTableModel() {
// JTableModel.setColumnCount(0); //清空表格模板内所有的列
// JTableModel.setRowCount(0); //清空表格模板内所有的行
// 在表格模板中加入列(加标题)
JTableModel.addColumn(“学号”);
JTableModel.addColumn(“姓名”);
JTableModel.addColumn(“性别”);
JTableModel.addColumn(“成绩”);
4: //四.在初始化组件的方法中调用createTableModel()方法
createTableModel();
5: //五.在表格视图中设置要应用的表格模板
JTableView.setModel(JTableModel);
6: // 连接数据库第1种方法,直接写代码
//1.加载驱动程序
try {
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
} catch (Exception ex) {
ex.printStackTrace();
System.out.println(“驱动程序加载失败!”);
}
try {
//2.建立数据库连接
Connection con = DriverManager.getConnection(“jdbc:odbc:Lesson12″);
//3.建立Statement语句执行对象
Statement st = con.createStatement();
//4.建立ResultSet结果集,执行SQL命令
ResultSet rs = st.executeQuery(“select * from StuScore”);
// Vector vcRows = new Vector(); //error 每行显示的都是第一条记录
//在表格模板中加入行(将表内记录通过循环一行行添加到表格模板中去)
while (rs.next())
{
Vector vcRows = new Vector();
vcRows.addElement(rs.getInt(1));
vcRows.addElement(rs.getString(2));
vcRows.addElement(rs.getString(3));
vcRows.addElement(rs.getFloat(4));
// JTableModel.addRow(rs.getInt(1)); //error
// JTableModel.addRow(rs.getString(2)); //error
JTableModel.addRow(vcRows); //添加一行记录到表格模板中
}
//5.关闭连接
rs.close();
st.close();
con.close();
// DBConnection.closeStmtAndCon(); //关闭相关连接
} catch (Exception ex) {
ex.printStackTrace();
System.out.println(“数据库连接失败!”);
}
=========完整的例子================================
public class NewAssignDialog extends javax.swing.JDialog {

org.htc.util.MyQuery mq = null;
private int rowCount = 0;
DefaultTableModel dTableModel = null;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
/** Creates new form NewZujianDialog */
public NewAssignDialog(java.awt.Frame parent, boolean modal) {
super(parent, “临牌发放”, modal);
//this.setLocation(120, 100);//窗口的位置
setAutoCenter(true);//窗口的位置
tiaomaTextField.setFocusable(true);

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jScrollPane1.setName(“jScrollPane1″); // NOI18N
jTable1.setAutoCreateRowSorter(true);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
“Title 1″, “Title 2″, “Title 3″, “Title 4″
}
));
jTable1.setName(“jTable1″); // NOI18N
jScrollPane1.setViewportView(jTable1);
dTableModel = this.getDefaultTableModel();
jTable1.setModel(dTableModel);
//禁止移动更改列的位置
jTable1.getTableHeader().setReorderingAllowed(false);
}
//JLabel -start
private DefaultTableModel createTableModel() {
DefaultTableModel JTableModel = new DefaultTableModel();
// JTableModel.setColumnCount(0); //清空表格模板内所有的列
// JTableModel.setRowCount(0); //清空表格模板内所有的行
// 在表格模板中加入列(加标题)
JTableModel.addColumn(“ID”);
JTableModel.addColumn(“姓名”);
JTableModel.addColumn(“性别”);
JTableModel.addColumn(“成绩”);
return JTableModel;
}

public DefaultTableModel getDefaultTableModel() {
DefaultTableModel JTableModel = new DefaultTableModel() {
public boolean isCellEditable(int row, int column) {//设置不可编辑
return false;
}
};
int pagesize = 0;
mq = new org.htc.util.MyQuery();
mq.setPageSize(0);//页面大小,显示的行数
List list = new AssignAction().query(mq);
rowCount = list.size();
for (int i = 0; i < list.size(); i++) {
DesAssignType dzt = (DesAssignType) list.get(i);
Vector vcRows = new Vector();
vcRows.addElement(dzt.getId());
vcRows.addElement(dzt.getTiaoMa());
vcRows.addElement(dzt.getId());
vcRows.addElement(dzt.getTiaoMa());
JTableModel.addRow(vcRows); //添加一行记录到表格模板中
}
return JTableModel;
}

public DefaultTableModel addRowDate(DefaultTableModel dtm) {
if (dtm == null) {
dtm = this.createTableModel();
}
Vector vcRows = new Vector();
vcRows.addElement(“1″);
vcRows.addElement(“2″);
vcRows.addElement(“3″);
vcRows.addElement(“4″);
dtm.addRow(vcRows); //添加一行记录到表格模板中
jTable1.setModel(dtm);
return dtm;
}
//JLabel -end
//选中某一行
private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
// 取得用户所选的多行
int selectRows = jTable1.getSelectedRows().length;// 取得用户所选行的行数
DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
if (selectRows > 1) {
int[] selRowIndexs = jTable1.getSelectedRows();// 用户所选行的序列
for (int i = 0; i < selRowIndexs.length; i++) {
// 用tableModel.getValueAt(row, column)取单元格数据
int selRowIndex = selRowIndexs[i];
selRowIndex = selRowIndex-i;
String cellValue = (String) tableModel.getValueAt(selRowIndex,0);
System.out.println(“duo=cellValue=” + cellValue);
//数据库删除
DesAssignType dat = new DesAssignType();
dat.setId(cellValue);
new AssignAction().delete(dat);
//更新jTable1
tableModel = (DefaultTableModel) jTable1.getModel();
tableModel.removeRow(selRowIndex);
}
}
if (selectRows == 1) {
int selectedRowIndex = jTable1.getSelectedRow(); // 取得用户所选单行
String cellValue = (String) tableModel.getValueAt(selectedRowIndex,0);
System.out.println(“cellValue=” + cellValue);
//数据库删除
DesAssignType dat = new DesAssignType();
dat.setId(cellValue);
new AssignAction().delete(dat);
//更新jTable1
System.out.println(“selectedRowIndex=”+selectedRowIndex);
tableModel.removeRow(selectedRowIndex);
}

}