その他いくつかのAPI(2)データベース関連情報の取得パラメータ情報を取得_結果情報の取得
7211 ワード
データベース関連情報の取得パラメータ情報を取得_結果情報の取得
データベース関連情報の取得
パラメータ情報の取得
※DriverManagement.getConnection(url, user, password);
のurlにgenerateSimpleParameterMetadata=trueを追加
private static String url = "jdbc:mysql://localhost:3306/jdbc?generateSimpleParameterMetadata=true";
そうでないとエラーが発生します(Parameter metadata not available for the given statement)
結果情報の取得
データベースに関する情報を入手-------------------------------------------------------------------------------
1、connectionを通す.getMetaData()メソッド
戻りタイプがDatabaseMetaDataのオブジェクトを取得します.
DatabaseMetaData meta = connection.getMetaData();
2、DatabaseMetaDataオブジェクトを通して、データベースに関する情報を得る:
たとえば、データベース・バージョン、データベース名、データベース・ベンダー情報、トランザクションをサポートするかどうか、トランザクション・独立性レベルをサポートするかどうか、結果セットのスクロールをサポートするかどうかなどです.
meta .getDatabaseProductName();//データベース名
meta .supportsTransactions();//取引をサポートしているか
DBMD.java
パラメータ情報を取得--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
※DriverManagement.getConnection(url, user, password);
のurlにgenerateSimpleParameterMetadata=trueを追加
private static String url = "jdbc:mysql://localhost:3306/jdbc?generateSimpleParameterMetadata=true";
そうでないとエラーが発生します(Parameter metadata not available for the given statement)
1.preparedStatementの
getParameterMetaData()メソッド、
戻りタイプがParameterMetaDataのクラスを取得します.
2.パラメータ情報はParameterMetaDataで入手できます.
pmd.getParameterClassName(i)
pmd.getParameterType(i)
pmd.getParameterTypeName(i)
iは、いくつ目のパラメータを表す
追加
?GenerateSimpleParameterMetadata=true後の
JdbcUtils.java
ParameterMetaTest.java
結果情報の取得
1.resultSetのrs.getMetaData()を通過する.方法
戻りタイプResultSetMetaDataのクラスを取得
2、ResultSetMetaDataにより、結果は数列、各列名、各列別名、各列タイプなどが得られます.
resultSetMetaData.getColumnClassName(i); resultSetMetaData.getColumnName(i); resultSetMetaData.getColumnType(i
);
ResultSetMetaTest.java
データベース関連情報の取得
パラメータ情報の取得
※DriverManagement.getConnection(url, user, password);
のurlにgenerateSimpleParameterMetadata=trueを追加
private static String url = "jdbc:mysql://localhost:3306/jdbc?generateSimpleParameterMetadata=true";
そうでないとエラーが発生します(Parameter metadata not available for the given statement)
結果情報の取得
データベースに関する情報を入手-------------------------------------------------------------------------------
1、connectionを通す.getMetaData()メソッド
戻りタイプがDatabaseMetaDataのオブジェクトを取得します.
DatabaseMetaData meta = connection.getMetaData();
2、DatabaseMetaDataオブジェクトを通して、データベースに関する情報を得る:
たとえば、データベース・バージョン、データベース名、データベース・ベンダー情報、トランザクションをサポートするかどうか、トランザクション・独立性レベルをサポートするかどうか、結果セットのスクロールをサポートするかどうかなどです.
meta .getDatabaseProductName();//データベース名
meta .supportsTransactions();//取引をサポートしているか
DBMD.java
package com.dwt1220;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
public class DBMD {
public static void main(String[] args) throws SQLException {
Connection conn=JdbcUtils.getConnection();
DatabaseMetaData dbmd=conn.getMetaData();
/************** *******************/
System.out.println("db name:"+dbmd.getDatabaseProductName());
/*********** *******************/
System.out.println("tx:"+dbmd.supportsTransactions());
conn.close();
}
}
パラメータ情報を取得--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
※DriverManagement.getConnection(url, user, password);
のurlにgenerateSimpleParameterMetadata=trueを追加
private static String url = "jdbc:mysql://localhost:3306/jdbc?generateSimpleParameterMetadata=true";
そうでないとエラーが発生します(Parameter metadata not available for the given statement)
1.preparedStatementの
getParameterMetaData()メソッド、
戻りタイプがParameterMetaDataのクラスを取得します.
2.パラメータ情報はParameterMetaDataで入手できます.
pmd.getParameterClassName(i)
pmd.getParameterType(i)
pmd.getParameterTypeName(i)
iは、いくつ目のパラメータを表す
追加
?GenerateSimpleParameterMetadata=true後の
JdbcUtils.java
package com.dwt1220;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
public final class JdbcUtils {
private static String url = "jdbc:mysql://localhost:3306/jdbc?generateSimpleParameterMetadata=true";
private static String user = "root";
private static String password = "123";
private JdbcUtils() {
}
static {// , 。
try {
//
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
public static void free(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
ParameterMetaTest.java
package com.dwt1220;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ParameterMetaTest {
public static void main(String[] args) throws SQLException {
Object[] params=new Object[]{"lisi",100f};
read("select* from user where name = ? and money > ?",params);
}
static void read(String sql,Object[] params) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs=null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
ParameterMetaData pmd=ps.getParameterMetaData();
int count=pmd.getParameterCount();
System.out.println("-----------------count ------------------");
System.out.println(count);
for(int i=1;i<=count;i++){
ps.setObject(i, params[i-1]);
}
System.out.println("-----------------PreparedStatement( )-----------------------------------");
for(int i=1;i<=count;i++){
/**************** ,(mysql )****************************************/
System.out.print(pmd.getParameterClassName(i)+"\t");
System.out.print(pmd.getParameterType(i)+"\t");
System.out.println(pmd.getParameterTypeName(i));
}
rs = ps.executeQuery();
System.out.println("----------------- ---------------------------------------");
while (rs.next()) {
System.out.println(rs.getObject("id") + "\t"
+ rs.getObject("name") + "\t"
+ rs.getObject("birthday") + "\t"
+ rs.getObject("money"));
}
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}
結果情報の取得
1.resultSetのrs.getMetaData()を通過する.方法
戻りタイプResultSetMetaDataのクラスを取得
2、ResultSetMetaDataにより、結果は数列、各列名、各列別名、各列タイプなどが得られます.
resultSetMetaData.getColumnClassName(i); resultSetMetaData.getColumnName(i); resultSetMetaData.getColumnType(i
);
ResultSetMetaTest.java
package com.dwt1220;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public final class ResultSetMetaTest {
public static void main(String[] args) throws Exception {
read();
}
static void read() throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "select id,name,birthday,money from user";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
/********** ResultSetMetaData 、 、 、 ***************/
ResultSetMetaData resultSetMetaData =rs.getMetaData();
/********* *********/
int columnCount=resultSetMetaData.getColumnCount();
System.out.println("count:"+columnCount);
System.out.println("-----------------ResultSetMetaData----------------------");
for(int i=1;i<=columnCount;i++){
System.out.print(resultSetMetaData.getColumnClassName(i)+"\t");
System.out.print(resultSetMetaData.getColumnName(i)+"\t");
System.out.println(resultSetMetaData.getColumnType(i)+"\t");
}
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
}