1. 程式人生 > >用JDBC獲得元數據

用JDBC獲得元數據

input host lose generated port execute res size todo

在查詢一個未知的表時,我們不知道表中有多少列,這些列都是什麽類型,可以通過查詢元數據,查詢他的列數、列名、列的類型。

代碼:

package jdbc_preparement;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class text_preparestartment { public static void main(String[] args) { // TODO Auto-generated method stub Connection con=simplecon.getConnection();
String sql="select * from t_user"; try { simple.getGeneral(sql); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//連接數據庫
class simplecon { static Connection con; static Connection getConnection() {
try{ con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","數據庫名","數據庫密碼"); }catch(SQLException e){ e.printStackTrace(); } return con; } static void close(AutoCloseable a) { try { a.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }class simple { static void getGeneral(String sql) { Connection con=simplecon.getConnection(); try { PreparedStatement ps=con.prepareStatement(sql); ResultSetMetaData re=ps.getMetaData(); //獲得元數據 int count=re.getColumnCount(); //返回列數 for(int i=1;i<=count;i++) //返回列類型 { System.out.print(re.getColumnTypeName(i)+" "); } System.out.println(); for(int i=1;i<=count;i++) //返回列名 { System.out.print(re.getColumnLabel(i)+" "); } System.out.println(); //執行sql查詢 ResultSet re2=ps.executeQuery(); //返回查詢結果 while(re2.next()) { for(int i=1;i<=count;i++) { System.out.print(re2.getString(i)+" "); } System.out.println(); } simplecon.close(ps); simplecon.close(re2); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

用JDBC獲得元數據