ResSetMetaData
可用于获取关于 ResultSet 对象中列的类型和属性信息的对象:
getColumnName(int column):获取指定列的名称
getColumnCount():返回当前 ResultSet 对象中的列数。
getColumnTypeName(int column):检索指定列的数据库特定的类型名称。
getColumnDisplaySize(int column):指示指定列的最大标准宽度,以字符为单位。
isNullable(int column):指示指定列中的值是否可以为 null。
isAutoIncrement(int column):指示是否自动为指定列进行编号,这样这些列仍然是只读
@Test
public void testResSetMetaData(){
Connection conn = null;
PreparedStatement preparedstatement = null;
ResultSet rs = null;
try {
conn = getConnection();
String sql = "select * from student";
preparedstatement = (PreparedStatement) conn.prepareStatement(sql);
rs = preparedstatement.executeQuery();
//1.得到ResSetMetaData()对象
ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
//2.得到列的个数
int c = rsmd.getColumnCount();
System.out.println(c);
//3.得到列名
for(int i = 0; i < c;i++){
String sName = rsmd.getColumnName(i + 1);
//得到列的别名
String cLabel = rsmd.getColumnLabel(i + 1);
System.out.println(sName + "==" + cLabel);
}
} catch (Exception e) {
e.printStackTrace();
}
}
DatabaseMetaData
DatabaseMetaData 类中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息:
可以由Connection得到
getURL():返回一个String类对象,代表数据库的URL。
getUserName():返回连接当前数据库管理系统的用户名。
isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。
getDatabaseProductName():返回数据库的产品名称。
getDatabaseProductVersion():返回数据库的版本号。
getDriverName():返回驱动驱动程序的名称。
getDriverVersion():返回驱动程序的版本号
@Test
public void testDatebaseMetaData(){
Connection conn = null;
ResultSet rs = null;
try {
conn = getConnection();
DatabaseMetaData data = (DatabaseMetaData) conn.getMetaData();
//得到数据库的版本号
int version = data.getDatabaseMajorVersion();
System.out.println(version);
//得到连接数据库的用户名
String user = data.getUserName();
System.out.println(user);
//得到MYSQL中有那些数据库
rs = data.getCatalogs();
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
Close(rs,null , conn);
}
}
prepareStatement(sql, autoGeneratedKeys)
@Test
public void testPreparedStatementjdbc(){
//返回主键的值
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = JdbcTools.getConnection();
String sql = "insert into student(sname,sclass) values(?,?)";
//preparedStatement = (PreparedStatement) connection.prepareStatement(sql);
//prepareStatement(sql, autoGeneratedKeys);
//使用重载的prepareStatement(sql, flag);生成 preparedstatement对象
preparedStatement = (PreparedStatement) connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, "MrChengs");
preparedStatement.setInt(2, 123456);
preparedStatement.executeUpdate();
//通过getGeneratedKeys();方法返回结果集
//包含了新生成的主键的ResultSet对象
ResultSet rs = preparedStatement.getGeneratedKeys();
if(rs.next()){
System.out.println(rs.getInt(1));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
Close(null, preparedStatement, connection);
}
}