关于AbstractTableModel连接数据库( 界面能显示,可数据库记录一条都不显示)

问题描述

packageexamch1.mygui;importjava.awt.*;importjavax.swing.*;importjavax.swing.table.AbstractTableModel;importjava.sql.*;importexamch1.db.MyEncode;importexamch1.db.MySqlConnection;//1.MyTableModel类是自定义表格模型类,用于创建不同表格模型的表格//2.MyTableModel类是AbstractTableModel的子类,只需提供对以下三个方法的实现://publicintgetRowCount();//publicintgetColumnCount();//publicObjectgetValueAt(introw,intcolumn);publicclassMyTableModelextendsAbstractTableModel{privateResultSetresultSet;//结果集:通过执行查询数据库的语句得到privateResultSetMetaDatametaData;//结果集元数据:ResultSet对象中列的类型和属性信息的对象。privateintnumberOfRows;//表格模型中的行数privateintnumberOfColumns;//表格模型中的列数publicMyTableModel(StringtableName)throwsException{setQuery(tableName);//初始化结果集元数据、结果集行数和列数等}//自定义方法:得到构造方法的参数所指定表的所有列名(表的所有字段名)publicString[]getColumnNames(){String[]columnName=null;try{columnName=newString[numberOfColumns];for(inti=0;i<numberOfColumns;i++){columnName[i]=metaData.getColumnName(i+1);//表的列编号从1(而不是0)开始}}catch(ExceptionsqlException){sqlException.printStackTrace();}returncolumnName;//返回表的所有字段名}//覆盖父类AbstractTableModel的方法:设置表格模型的列标题publicStringgetColumnName(intcolumn){try{returnmetaData.getColumnName(column+1);}catch(SQLExceptionsqlException){sqlException.printStackTrace();}return"";}//必须覆盖父类AbstractTableModel的抽象方法——设置表格模型的列数publicintgetColumnCount(){returnnumberOfColumns;}//必须覆盖父类AbstractTableModel的抽象方法——设置表格模型的行数publicintgetRowCount(){returnnumberOfRows;}//必须覆盖父类AbstractTableModel的抽象方法——设置单元格的值publicObjectgetValueAt(introw,intcolumn){try{resultSet.absolute(row+1);//游标定位到指定的行if(column==1){//本项目中所有表的第2列值可能是中文,进行编码转换后返回returnMyEncode.ISOtoGB((String)resultSet.getObject(column+1));//返回该行某列的值}else{returnresultSet.getObject(column+1);//返回该行某列的值}}catch(SQLExceptionsqlException){sqlException.printStackTrace();}return"";}//自定义方法:对参数指定的数据库表进行查询,通过结果集元数据初始化表格的行数和列数等publicvoidsetQuery(StringtableName){Connectioncon=null;Statementstatement=null;try{con=MySqlConnection.getConnection();//建立数据库连接statement=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);resultSet=statement.executeQuery("select*from"+tableName);//查询结果集resultSet.last();//将指针移动到此ResultSet对象的最后一行。numberOfRows=resultSet.getRow();//当前行的编号;1、2、3等;不存在当前行返回0metaData=resultSet.getMetaData();//返回ResultSet对象的列的编号、类型和属性numberOfColumns=metaData.getColumnCount();//得到ResultSet对象中的列数//System.out.println(numberOfRows+""+numberOfColumns);}catch(SQLExceptione){e.printStackTrace();}finally{MySqlConnection.closeConnection(con);}fireTableStructureChanged();//表中的列数,新列的名称和类型等更改时,调用该方法更新表格}//测试MyTableModel类publicstaticvoidmain(String[]args)throwsException{//1.创建表格,将数据库表question的所有记录显示在表格中MyTableModeltableModel=newMyTableModel("Admin");//由数据库表question创建表格模型JTableresultTable=newJTable(tableModel);//表格:显示数据库表question中的所有记录JScrollPanescrollPanetable=newJScrollPane(resultTable);//需要是显示滚动条//2.得到表的所有列名称---数据库表的字段Stringresult="Admin表的列名:";Stringnames[]=tableModel.getColumnNames();for(inti=0;i<names.length;i++){result+=names[i]+"";}//3.创建窗口并显示表格JFramefr=newJFrame("显示表格");fr.getContentPane().add(newJLabel(result),BorderLayout.NORTH);fr.getContentPane().add(scrollPanetable,BorderLayout.CENTER);fr.setSize(400,120);fr.setVisible(true);}}那位前辈有这方面的例子,分享一下,晚辈先谢谢了!

解决方案

解决方案二:
mark!

时间: 2024-09-23 02:01:44

关于AbstractTableModel连接数据库( 界面能显示,可数据库记录一条都不显示)的相关文章

分页显示Oracle数据库记录的类之一

oracle|分页|数据|数据库|显示 <?php /********************************************* TOracleViewPage v 2.0 日期:2000-9-23 分页显示Oracle数据库记录的类 更新日期:2000-10-19 增加显示TopRecord的功能,允许第一页显示的记录数与其它页不同. 作者:sharetop email:ycshowtop@21cn.com ***********************************

分页显示Oracle数据库记录的PHP类

<?php /********************************************* TOracleViewPage v 2.0 日期:2000-9-23 分页显示Oracle数据库记录的类 更新日期:2000-10-19 增加显示TopRecord的功能,允许第一页显示的记录数与其它页不同. 作者:sharetop email:ycshowtop@21cn.com ***********************************************/ class

分页显示Oracle数据库记录的类之一_php基础

<?php /********************************************* TOracleViewPagev 2.0 日期:2000-9-23 分页显示Oracle数据库记录的类 更新日期:2000-10-19 增加显示TopRecord的功能,允许第一页显示的记录数与其它页不同. 作者:sharetop email:ycshowtop@21cn.com ***********************************************/ class T

分页显示Oracle数据库记录的类

<?php /********************************************* TOracleViewPagev 2.0 日期:2000-9-23 分页显示Oracle数据库记录的类 更新日期:2000-10-19 增加显示TopRecord的功能,允许第一页显示的记录数与其它页不同. 作者:sharetop email:ycshowtop@21cn.com ***********************************************/ class T

对象-我用编码方式在qt创建一个窗口,为什么除了窗口的标题显示正常外,其余地方窗口都没有显示?

问题描述 我用编码方式在qt创建一个窗口,为什么除了窗口的标题显示正常外,其余地方窗口都没有显示? 我用编码方式在qt创建一个窗口,为什么除了窗口的标题显示正常外,其余地方窗口都没有显示?求指教! 代码:#ifndef CALENDER_H #define CALENDER_H #include #include #include #include #include #include #include #include #include #include #include #include #i

麻烦帮看下没显示-新手麻烦帮下怎么都不显示

问题描述 新手麻烦帮下怎么都不显示 package p1; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; import javax.swing.*; public class FCFS extends JFrame implements ActionListener{ Vector workVector; int sta

分页显示Oracle数据库记录的类之二

oracle|分页|数据|数据库|显示 //-------------------------------- // 工作函数 //-------------------------------- //读取记录 // 主要工作函数,根据所给的条件从表中读取相应的记录 // 返回值是一个二维数组,Result[记录号][字段名] function ReadList() { $SQL="SELECT * FROM ".$this->Table." ".$this-&

分页显示Oracle数据库记录的类之二_php基础

//-------------------------------- // 工作函数 //-------------------------------- //读取记录 //主要工作函数,根据所给的条件从表中读取相应的记录 //返回值是一个二维数组,Result[记录号][字段名] function ReadList() { $SQL="SELECT * FROM ".$this->Table." ".$this->Condition." OR

php如何显示mysql数据库记录

/*  * Created on 2010-4-25  *  * To change the template for this generated file go to  * Window - Preferences - PHPeclips教程e - PHP - Code Templates  */  $conn=mysql_connect('localhost','root','');  mysql_select_db('member',$conn);  $sql="select * fro