知识大全 Java数据库编程中查询结果的输出
Posted 知
篇首语:勇士搏出惊涛骇流而不沉沦,懦夫在风平浪静也会溺水。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java数据库编程中查询结果的输出相关的知识,希望对你有一定的参考价值。
Java数据库编程中查询结果的输出 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
利用Java开发数据库应用系统时 经常需要在用户界面上显示查询结果 由于SUN公司提供的JDK x开发工具包不是可视化的集成开发环境(IDE) 能象Delphi VB那样方便地把查询结果在DBGrid等表格中显示出来 因此 只能靠自己编写代码来实现 在实际应用中 我们可以利用Vector JTable AbstractTableModel等三个类较好地解决这一问题 以下 详细介绍一下实现方法 一 类Vector 类JTable及类AbstractTableModel简介 类Vector 类Vector是Java的历史集合类 隶属于java util包 它包装了异构链表和数组杂合体 具有以下两个特点 ( )向量是异构的 不要求每个元素的类型相同 向量中可以混合多种对象类型 ( )向量是数组杂合体 因为它们可以在增加元素时动态增大 其异构性正好符合数据库记录中属性类型不一的特点 而其动态性也正好符合数据库查询时 结果集记录个数不定的特点 类Vector定义如下 public class Vector extends AbstractList implements List Cloneable Serializable… 实现了向量成员的查找 新增 删除等方法 如 add(Object obj)可方便地加入一个对象 get(int index)可方便地得到向量中的一个对象 remove(Object obj)则可方便地删除向量中一个对象 类JTable JTable组件是Swing组件中比较复杂的小件 隶属于javax swing包 它能以二维表的形式显示数据 类JTable定义如下 public class JTable extends JComponent implements TableModelListener Scrollable TableColumnModelListener ListSelectionListener CellEditorListener Accessible… 类JTable在显示数据时具有以下特点 ( )可定制性 可以定制数据的显示方式和编辑状态 ( )异构性 可以显示不同类型的数据对象 甚至包括颜色 图标等复杂对象 ( )简便性 可以以缺省方式轻松地建立起一个二维表 其可定制性可满足不同用户和场合的要求 异构性也正好符合数据库访问结果集中属性类型不一的特点 类JTable提供了极为丰富的二维表格操作方法 如设置编辑状态 显示方式 选择行列等 在此不一一赘述 使用类JTable显示数据之前 必须根据情况生成定制模型 单元绘制器或单元编辑器 类AbstractListModel用来定制用户自己的数据模型 这个类在后面要介绍 TableCellRenderer接口用来定制单元绘制器 TableCellEditor接口用来定制单元编辑器 这两个接口主要用于颜色对象的处理上 在示例中没有用到 不做过多说明 类AbstractTableModel 类AbstractTableModel是一个抽象类 没有完全实现 不能实例化 使用时必须在程序中实现方法 它隶属于javax swing table 类定义如下 public abstract class AbstractTableModel extends Object implements TableModel Serializable… 类AbstractTableModel提供了TableModel接口中绝大多数方法的缺省实现 TableModel接口定义了JTable 的基础数据结构 用户要生成自己的数据模型 本来可以通过实现TableModel接口中所有方法来满足要求 但管理听众表的功能对于所有数据模型是共同的 所以在javax swing table中又定义了类AbstractTableModel来处理这个工作 它既管理听众表 又为生成TableModelEvents事件并委托给听众提供了便利 要想生成一个具体的TableModel作为AbstractTableMode的子类 至少必须实现下面三个方法 public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row int column); 至此 我们可以建立一个简单二维表( × ) 实现方法如下 TableModel dataModel = new AbstractTableModel() public int getColumnCount() return ; public int getRowCount() return ; public Object getValueAt(int row int col) return new Integer(row*col); ; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 二 数据库及其连接方法简介 示例采用Sybase数据库系统 数据库存放在数据库服务器中 路径为 D:\\WORKER 数据库名为 worker dbf 具有以下字段 字段名 类型 Wno(职工号) VARCHAR Wname(职工名) VARCHAR Sex(性别) VARCHAR Birthday(出生日期) DATE Wage(工资) FLOAT 要连接此数据库 需使用java sql包中的类DriverManager 此类是用于管理JDBC驱动程序的实用程序类 它提供了通过驱动程序取得连接 注册 撤消驱动程序 设置登记和数据库访问登录超时等方法 具体连接方法如下 第一步 定位 装入和链接SybDriver类 driver= sybase jdbc SybDriver ; SybDriver sybdriver=(SybDriver) Class forName(driver) newInstance(); 第二步 注册SybDriver类 DriverManager registerDriver(sybdriver); 第三步 取得连接(SybConnection)对象引用 user= sa ; password= ; url= jdbc:sybase:Tds: : /WORKER ; SybConnection connection= (SybConnection)DriverManager getConnection (url user password); 建立完连接后 即可通过Statement接口进行数据库的查询与更改 三 实现方法 限于篇幅 在此只给出核心代码 包引入 界面处理 变量定义等部分不再介绍 第一步 对象声明 AbstractTableModel tm; //声明一个类AbstractTableModel对象 JTable jg_table;//声明一个类JTable对象 Vector vect;//声明一个向量对象 JScrollPane jsp;//声明一个滚动杠对象 String title[]= 职工号 职工名 性别 出生日期 工资 ; //二维表列名 第二步 定制表格 实现抽象类AbstractTableModel对象tm中的方法 vect=new Vector();//实例化向量 tm=new AbstractTableModel() public int getColumnCount() return title length;//取得表格列数 public int getRowCount() return vect size();//取得表格行数 public Object getValueAt(int row int column) if(!vect isEmpty()) return ((Vector)vect elementAt(row)) elementAt(column); else return null;//取得单元格中的属性值 public String getColumnName(int column) return title[column];//设置表格列名 public void setValueAt (Object value int row int column) //数据模型不可编辑 该方法设置为空 public Class getColumnClass(int c) return getValueAt( c) getClass(); //取得列所属对象类 public boolean isCellEditable(int row int column) return false;//设置单元格不可编辑 为缺省实现 ; 定制表格 jg_table=new JTable(tm);//生成自己的数据模型 jg_table setToolTipText( 显示全部查询结果 ); //设置帮助提示 jg_table setAutoResizeMode(JTable AUTO_RESIZE_OFF); //设置表格调整尺寸模式 jg_table setCellSelectionEnabled(false); //设置单元格选择方式 jg_table setShowVerticalLines(true);// 设置是否显示单元格间的分割线 jg_table setShowHorizontalLines(true); jsp=new JScrollPane(jg_table);//给表格加上滚动杠 第三步 显示查询结果 连接数据库 第二部分已给出 数据库查询 Statement stmt=connection createStatement(); ResultSet rs=stmt executeQuery ( select * from worker ); 显示查询结果 vect removeAllElements();//初始化向量对象 tm fireTableStructureChanged();//更新表格内容 while(rs next()) Vector rec_vector=new Vector(); //从结果集中取数据放入向量rec_vector中 rec_vector addElement(rs getString( )); rec_vector addElement(rs getString( )); rec_vector addElement(rs getString( )); rec_vector addElement(rs getDate( )); rec_vector addElement(new Float(rs getFloat( ))); vect addElement(rec_vector); //向量rec_vector加入向量vect中 tm fireTableStructureChanged(); //更新表格 显示向量vect的内容 若要实现示图中记录前翻 后翻的效果 有两种方法 一 如果软件环境支持JDBC 可直接利用rs prevoius()和rs next()获得记录 然后通过类JTextField中的setText()方法 显示出各个字段值 二 如果不支持JDBC 则可利用向量Vector按行取出JTable中数据 自定义一个指针 用来记录位置 当指针加 时 取出上一行数据放入Vector中显示 指针减 时 取出下一行数据显示 显示方法同上 需要说明的是 代码中没有给出捕捉例外的部分 如SQLException 实际应用中必须给出 此外 有些系统中 cha138/Article/program/Java/hx/201311/26092相关参考
Java数据库编程中的几个常用技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java数据库
知识大全 用JAVA编程从键盘输入一个正整数,计算该数的各位数字之和并输出,例如输入数是5246
用JAVA编程从键盘输入一个正整数,计算该数的各位数字之和并输出,例如输入数是5246 以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的
以上是一个多数熟悉单线程编程的人在第一反应下给出的实现方法但是该类在运行的时候输出的结果却不是期望的HelloWorld!而是Hello这是由于线程的竞争条件导致的
PHP网络编程:在数据库中查询记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
Java网络数据库编程及其应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着电子商务及动态
Java网络编程多种多样的连接数据库的方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一通过
Java中的大量数据查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问题描述在通常的三层构架
利用Java语言实现数据报编程之单播 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 实际上单播就
C#高级编程:写入XML输出结果 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
知识大全 Sql Server 数据库表查询结果导出为excel文件
SqlServer数据库表查询结果导出为excel文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧