1 DatabaseMetaData 数据库信息类
DatabaseMetaData是从Connection.getMetaData()函数返回过来的对象,存储这数据库的一些配置信息
getUrl | 返回一个String字符串,表示对数据库的连接路径 |
getUserName | 返回一个字符串,表示当前连接到数据库中的管理员角色的名称 |
getDriverName | 返回一个字符串,表示当前数据库驱动的名称 |
getDatabaseProductName | 返回当前数据库产品的名称 |
isReadOnly | 返回一个boolean行,判断当前数据库操作是否是只读类型 |
getDriverVersion | 返回一个字符串,表示当前驱动的版本号 |
实现代码:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection
ct= DriverManager.getConnection("jdbc:sqlserver://10.11.11.26:1433;DatabaseName=111111","sa","11111");
Statement statement=ct.createStatement();
//创建一个类
ResultSet resultSet= statement.executeQuery("select * from uf_test1_fff where 1=2");
DatabaseMetaData databaseMetaData=ct.getMetaData();
//下面是获取到当前数据库对象信息
String user=databaseMetaData.getUserName();
String url=databaseMetaData.getURL();
boolean isReadOnly=databaseMetaData.isReadOnly();//是否是只读操作
String versionproduct=databaseMetaData.getDatabaseProductVersion();//数据库产品的编号
String drivername=databaseMetaData.getDriverName();//数据库驱动的名称
String driversion =databaseMetaData.getDriverVersion();//获取到驱动的版本
int version = databaseMetaData.getDatabaseMajorVersion();
System.out.println(version);
System.out.println("输出相关的数据库的相关信息");
System.out.println("数据库产品编号为"+versionproduct+"-----"+"数据库产品驱动"+drivername+"----数据库驱动版本"+driversion+"----------是否对数据库只读操作"+isReadOnly);
实现效果:
2 ResultsetmetaData 获取到数据库中列的相关信息
getColumnName | 获取到列的数据库名称 |
getColumnLabel | 获取到列的显示名称(如果没有重命名就跟getColumnName一样) |
getColumnType | 获取到数据库中列的类型 |
getColumnDisplaySize | 获取到数据库中的标准宽度 |
isNullable | 是否可以为空 |
isAutoIncrement | 是否可以自增长 |
isSearchable | 是否可以用在where语句中进行模糊搜索 |
isWritable | 是否可以写入成功 |
实现代码:
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.Test;
import java.sql.*;
public class test {
@Test
public void findColumn() throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection
ct= DriverManager.getConnection("jdbc:sqlserver://10.10.11.26 :1433;DatabaseName=ecology","sa","ecology");
Statement statement=ct.createStatement();
//创建一个类
ResultSet resultSet= statement.executeQuery("select * from uf_test1_fff where 1=2");
DatabaseMetaData databaseMetaData=ct.getMetaData();
//下面是获取到当前数据库对象信息
//数据库中对象列的相关信息
ResultSetMetaData resultSetMetaData=resultSet.getMetaData();
int count=resultSetMetaData.getColumnCount();
//获取到列的总数
for(int i=1;i<=count;i++)
{
System.out.print("第"+(i)+"列的真实名称为"+resultSetMetaData.getColumnName(i));
System.out.print("第"+(i)+"列的虚拟名称"+resultSetMetaData.getColumnLabel(i));//如果有重命名此操作,比如 select a.id as testid from test a where 1=2,这时候就会返回 testid
System.out.print("第"+(i)+"列的数据库类型"+resultSetMetaData.getColumnType(i));
System.out.print("第"+(i)+"列的指定列的标准宽度"+resultSetMetaData.getColumnDisplaySize(i));
System.out.print("第"+(i)+"列的是否可以为空"+resultSetMetaData.isNullable(i));
System.out.print("第"+(i)+"列的是否为自动增长"+resultSetMetaData.isAutoIncrement(i));
System.out.print("第"+(i)+"列的子类名称"+resultSetMetaData.getColumnClassName(i));//这个不懂
System.out.print("第"+(i)+"列的 是否可以在where语句中模糊搜索"+resultSetMetaData.isSearchable(i));//如果是text文本类型就不能使用where 中的like语句
System.out.print("第"+(i)+"列的是否为自动增长"+resultSetMetaData.isWritable(i));//是否可以写入成功
System.out.println();
}
}
}
实现结果:
3