ResultSetMetaData:用来分析 "结果集"信息
DatabaseMetaData:用来分析是"数据库"信息
//做一个简单的 查询执行器
package com.enhance.jdbc;
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(40);
private static Connection conn;
private static Statement stmt;
private static ResultSet rs;
static {
try {
Properties prop=new Properties();
FileInputStream in=new FileInputStream("src/mysql.ini");
prop.load(in);
in.close();
String driver =prop.getProperty("driver");
String url=prop.getProperty("url");
String user=prop.getProperty("user");
String pass=prop.getProperty("pass");
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pass);
stmt=conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
class ExecListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(scrollPane!=null){
jf.remove(scrollPane);
}
try {
rs=stmt.executeQuery(sqlField.getText());
System.out.println();
ResultSetMetaData rsmd=rs.getMetaData();
Vector<String> columnNames=new Vector<String>();
System.out.println("cn"+rsmd.getColumnCount());
Vector data=new Vector();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
columnNames.add(rsmd.getColumnName(i+1));
}
while(rs.next()){
Vector v=new Vector();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
v.add(rs.getString(i+1));
}
data.add(v);
}
model = new DefaultTableModel(data,columnNames);
JTable table=new JTable(model);
scrollPane=new JScrollPane(table);
jf.add(scrollPane);
jf.validate();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
public void init(){
JPanel top=new JPanel();
top.add(new JLabel("输入查询语句:"));
top.add(sqlField);
top.add(execBn);
execBn.addActionListener(new ExecListener());
sqlField.addActionListener(new ExecListener());
jf.add(top,BorderLayout.NORTH);
jf.setSize(640,480);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String[] args) {
new QueryExecutor().init();
}
}
//分析数据库信息
package com.enhance.jdbc;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Properties;
public class DataBaseMetaDataTest {
private String driver;
private String url;
private String user;
private String pass;
private Connection conn;
private ResultSet rs;
public void initParam(String paramFile) throws Exception{
Properties prop=new Properties();
prop.load(new FileInputStream(paramFile));
driver=prop.getProperty("driver");
url=prop.getProperty("url");
user=prop.getProperty("user");
pass=prop.getProperty("pass");
}
public void info() throws Exception{
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pass);
//获取DataBaseMeteData对象
DatabaseMetaData dbmd=conn.getMetaData();
//获取MySql支持的所有类型
ResultSet rs=dbmd.getTableTypes();
System.out.println("----MySql支持的表的类型信息----");
printResultSet(rs);
//获取当前数据库的全部数据表
rs=dbmd.getTables(null,null, "%", new String[]{"TABLE"});
System.out.println("----当前数据库中的所有表信息----");
printResultSet(rs);
rs=dbmd.getPrimaryKeys(null, null, "my_test");
System.out.println("----my_test表中的主键信息----");
printResultSet(rs);
rs=dbmd.getProcedures(null, null, "%");
System.out.println("----当前数据库中所有存储过程信息----");
printResultSet(rs);
rs=dbmd.getCrossReference(null, null, "time_zone", null, null, "time_zone_name");
System.out.println("----time_zone表和time_zone_name表之间的外键约束----");
printResultSet(rs);
rs=dbmd.getColumns(null, null, "my_test", "%");
System.out.println("----my_test表的全部数据列----");
printResultSet(rs);
System.out.println(dbmd.getDatabaseProductName());
System.out.println(dbmd.getDatabaseProductVersion());
System.out.println(dbmd.getDriverName());
System.out.println(dbmd.getDriverVersion());
} finally{
if(rs!=null)
rs.close();
if(conn!=null)
conn.close();
}
}
public void printResultSet(ResultSet rs) throws SQLException{
ResultSetMetaData rsmd=rs.getMetaData();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
System.out.print(rsmd.getColumnName(i+1)+"\t");
}
System.out.println();
while(rs.next()){
for (int i = 0; i < rsmd.getColumnCount(); i++) {
System.out.print(rs.getString(i+1)+"\t");
}
System.out.println();
}
rs.close();
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
DataBaseMetaDataTest dbmdt=new DataBaseMetaDataTest();
dbmdt.initParam("src/mysql.ini");
dbmdt.info();
}
}
- 大小: 74.2 KB
分享到:
相关推荐
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
元数据接口(如 ResultSetMetaData 和 DatabaseMetaData)得到了增强,以支持更多类型的信息查询,比如数据库列的默认值等。 ##### 2.3 支持批量更新 JDBC 4.0 提供了对批量更新的支持,可以通过 PreparedStatement...
Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了关于整个数据库的信息,包括表名、表的...
在元数据方面,DM8提供了ResultSetMetaData、DatabaseMetaData和ParameterMetaData等信息。在分布式事务支持方面,DM8提供了XADataSource、XAConnection、XAResource和Xid等技术支持。 总的来说,DM8数据库是一款...
JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。 文件有说明spring+hibernate+c3p0+jtds的配置
在Java的JDBC(Java Database Connectivity)中,`DatabaseMetaData`和`ResultSetMetaData`是两个非常重要的接口,它们提供了获取数据库元数据和结果集元数据的功能。元数据是指关于数据的数据,例如数据库的表结构...
7. **JDBC API的主要类和接口**:包括Driver、Connection、Statement、PreparedStatement、CallableStatement、ResultSet、ResultSetMetaData、DatabaseMetaData等,它们构成了JDBC的核心。 在"01_传智播客JDBC_...
7. **JDBC API的主要接口和类**:包括Driver、Connection、Statement、PreparedStatement、CallableStatement、ResultSet、ResultSetMetaData、DatabaseMetaData等,每个都有其特定的作用和功能。 8. **异常处理**...
11. **元数据(MetaData)**:通过ResultSetMetaData或DatabaseMetaData对象,可以获取关于表结构、列信息、索引等数据库元数据。 12. **游标(Cursor)**:在Oracle JDBC中,游标允许用户从结果集中按行进行导航,...
本案例主要讲解如何使用Java的`DatabaseMetaData`类来获取数据库的元数据,并展示了一个简单的分页实现。 首先,`DatabaseMetaData`是Java SQL API的一部分,它是通过数据库连接对象`Connection`获取的。在案例中,...
其中,`Connection`、`Driver`、`DriverManager`、`Statement`、`PreparedStatement`、`CallableStatement`、`ResultSet`、`ResultSetMetaData`和`DatabaseMetaData`是关键的类和接口。例如,`Connection`类用于建立...
以及获取和修改数据使用JDBC加载驱动程序、连接数据库、执行SQL语句和处理结果集使用处理预编译语句的接口PreparedStatement执行带参数的动态SQL语句利用CallableStatement接口执行SQL的存储过程使用Database...
- **`DatabaseMetaData`**:提供有关数据库的元数据信息,如支持的SQL语法、存储过程等。 #### 四、JDBC驱动类型 根据驱动程序的工作方式,JDBC驱动程序可以分为以下几类: 1. **JDBC-ODBC Bridge**:通过ODBC桥接...
8. **DatabaseMetaData接口**:获取数据库的元数据信息,如表信息、列信息等。 9. **ResultSetMetaData接口**:获取ResultSet对象的元数据,如列数、列名、列类型等。 10. **Types类**:包含静态常量,代表JDBC类型...
10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...
10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...
10.3.1 在JTree中显示DatabaseMetaData 10.4 检索有关RDBMS功能性的信息 10.5 使用ResultSetMetaData 10.6 小结 第3部分 三层Web站点与JDBC 第11章 构建会员Web站点 11.1 设计一个多层系统 11.2 功能性...