ResultSetMetaData和DatabaseMetaData
来源:互联网 发布:吊顶软件下载 编辑:程序博客网 时间:2024/06/05 08:16
MetaData的意思是元数据,即描述其他数据的数据,因此ResultSetMetaData封装了描述ResultSet对象的数据,这些描述ResultSet对象的数据包括列名、列类型、列数、表名等信息;而DatabaseMetaData则封装了描述Database的数据,这些描述数据库的元数据包括表类型、数据库的全部数据表、表的主键、表的外键、数据库里的存储过程、某个表的全部数据列等待信息。
1.ResultSetMetaData
ResultSet里包含一个getMetaData()方法,该方法返回该ResultSet对应的ResultSetMetaData对象。一旦获得了ResultSetMetaData对象,就可通过ResultSetMetaData提供大量的方法来返回ResultSet的描述信息,常用的方法有如下三个:
(1)int getColumnCount():返回该ResultSet的列数量。
(2)String getColumnName(int column):返回指定索引的列名。
(3)int getColumnType(int column):返回指定索引的列类型。
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.FileInputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.util.Properties;import java.util.Vector;
import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;
public class QueryExecutor{ JFrame jf=new JFrame("查询执行器"); private JScrollPane scrollPane; private DefaultTableModel model; private JButton execBn=new JButton("查询"); //用于输入查询语娥句的文本框 private JTextField sqlField=new JTextField(45); private static Connection conn; private static Statement stmt; private ResultSet rs; static { try { Properties prop=new Properties(); FileInputStream in=new FileInputStream("mysql.ini"); prop.load(in); in.close(); String driver=prop.getProperty("driver"); String url=prop.getProperty("url"); String username=prop.getProperty("user"); String password=prop.getProperty("pass"); //加载数据库驱动 Class.forName(driver); //取得数据库连接 conn=DriverManager.getConnection(url,username,password); stmt=conn.createStatement(); } catch(Exception e) { e.printStackTrace(); } } //初始化界面
public void init() { JPanel top=new JPanel(); top.add(new JLabel("查询语句:")); top.add(sqlField); top.add(execBn); execBn.addActionListener(new ExceListener()); sqlField.addActionListener(new ExceListener()); jf.add(top,BorderLayout.NORTH); jf.setSize(640, 480); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } class ExceListener implements ActionListener {
@Override public void actionPerformed(ActionEvent event) { // TODO Auto-generated method stub if(scrollPane!=null) { jf.remove(scrollPane); } try { //根据用户输入的Sql语句执行查询 rs=stmt.executeQuery(sqlField.getText()); //取出ResultSet的MetaData ResultSetMetaData rsmd=rs.getMetaData(); Vector<String> columnNames=new Vector<String>(); Vector data=new Vector();
//把ResultSet的所有列名添加到Vector里 int columnCount=rsmd.getColumnCount(); for(int i=1;i<=columnCount;i++) { columnNames.add(rsmd.getColumnName(i)); } while(rs.next()) { Vector v=new Vector(); for(int i=1;i<=columnCount;i++) { v.add(rs.getString(i)); } data.add(v); } //更新TableModel model=new DefaultTableModel(data,columnNames); //创建新的JTable JTable table=new JTable(model); scrollPane=new JScrollPane(table); //添加新的Table jf.add(scrollPane); jf.pack(); //更新窗口 jf.setVisible(true); } catch(Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { new QueryExecutor().init(); }}
上面程序中蓝色斜体代码就是根据ResultSetMetaData分析ResultSet的关键代码,使用ResultSetMetaData查询ResultSet包含多少列,并把所有数据列的列名添加到一个Vector里,再把ResultSet里的所有数据添加到Vector里,并使用这两个Vector来创建新的TableModel,并利用该TableModel生成新的JTable,最后将该JTable显示出来. chengxuyunxingjieguoruxiasuoshi:
2.DatabaseMetaData
JDBC提供了DatabaseMetaData来封装数据库连接对应数据库的信息,同过Connection提供的getMetaData()方法就可以获取到数据库对应的DatabaseMetaData对象。
许多DatabaseMetaData方法以ResultSet对象的形式返回查询的信息,使用ResultSet的常规方法(例如getString和getInt)即可从这些ResultSet对象中获取数据。如果查询的信息不可用,则返回一个空的ResultSet对象。
- JDBC: ResultSetMetaData和DatabaseMetaData
- ResultSetMetaData和DatabaseMetaData
- ResultSetMetaData和DatabaseMetaData
- ResultSetMetaData 和DatabaseMetaData的用法
- 使用DatabaseMetaData和ResultSetMetaData查看数据库信息
- ResultSetMetaData和DatabaseMetaData用法简介(转)
- JDBC:MetaData(ResultSetMetaData、DataBaseMetaData)
- 利用DataBaseMetaData和ResultSetMetaData复制数据库的表和数据
- 学习ResultSetMetaData、DatabaseMetaData的知识
- 三大元数据--DatabaseMetaData,ParameterMetaData,ResultSetMetaData
- ResultSetMetaData 、DatabaseMetaData中的方法介绍
- ResultSetMetaData 、DatabaseMetaData中的方法的介绍
- ResultSetMetaData类与DatabaseMetaData类操作元数据
- DatabaseMetaData ResultSet ResultSetMetaData三种类型的区别
- DatabaseMetaData,ResultSet,ResultSetMetaData三种类型的区别
- DatabaseMetaData.getProcedures和getProcedureColumns
- ResultSet和 ResultSetMetaData
- DatabaseMetaData
- bootstrap 大坑,大坑
- [Unity][PHOTON][UNET][SOCKET][Android]PC-Android建立聊天室ChatRoom交互通讯
- 征服number类型的input框
- springmvc常用注解标签详解
- day11c语言作业
- ResultSetMetaData和DatabaseMetaData
- ZOJ 3985String of CCPC (字符串判断)
- [机器学习]粒子群算法
- 概率随机数
- LeetCode刷题(28)
- 选择排序
- 关押罪犯(codevs1069)
- 提高代码阅读能力的7种方法
- 无标题Markdown(1)