元数据
在jdbc中获取数据库的定义,例如:数据库、表、列的定义信息。就用到元数据。
在jdbc中可以使用:
1. 数据库元数据
2. 参数元数据
3. 结果集元数据
package test;
import static org.junit.jupiter.api.Assertions.*;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.junit.jupiter.api.Test;
import jdbcUtil.jdbcUtil;
class MetadataTest {
//数据库元数据
@Test
void test() throws SQLException {
Connection connection = jdbcUtil.getConnection();
DatabaseMetaData metadata = connection.getMetaData();
System.out.println(metadata.getUserName());
System.out.println(metadata.getURL());
System.out.println(metadata.getDatabaseProductName());
}
//参数元数据
@Test
void test1() throws SQLException {
Connection connection = jdbcUtil.getConnection();
String sql = "SELECT *FROM teacher where id=? and name=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
System.out.println(parameterMetaData.getParameterCount());
}
//结果集元数据
@Test
void test2() {
Connection connection = jdbcUtil.getConnection();
String sql = "SELECT *FROM teacher";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int count = resultSetMetaData.getColumnCount();
System.out.println();
while(resultSet.next()) {
for(int i=1;i<=count;i++) {
String name = resultSetMetaData.getColumnName(i);
Object value = resultSet.getObject(name);
System.out.print(name+"="+value+",");
}
System.out.println();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}