ResultSetMetaData:用來分析 "結果集"信息
DatabaseMetaData:用來分析是"數據庫"信息
//做一個簡單的 查詢執行器
//分析數據庫信息
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(); } }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
