2.5.1 调用存储过程
优质
小牛编辑
129浏览
2023-12-01
数据库元数据就是和数据库本身及其子项(表、视图等)相关的数据,使用Connection接口的getMetaData()可以获得JDBC提供的所有的元数据。getMetaData方法的定义如下:
DatabaseMetaData getMetaData() throws SQLException;
DatabaseMetaData接口为我们提供了很多用于访问数据库元数据的方法,如数据库版本、JDBC驱动名、JDBC驱动版本、表信息、视图信息、存储过程信息等。下面是一些常用的获得数据库元数据的方法:
下面的代码演示了如何使用上面的方法来获得数据库元数据,这个程序将列出一些和数据库相关的信息,以及服务器中所有的数据库名、mydb数据库中的表名、视图名、存储过程名和函数名,示例的代码如下:
public class DBMetaData
{
public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
// 获得Connection对象
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost/mydb?" +
characterEncoding=UTF8", "root", "1234");
// 获得DatabaseMetaData对象
DatabaseMetaData dbmd = conn.getMetaData();
// 开始输出和数据库有关的元数据
System.out.println("数据库产品名:" + dbmd.getDatabaseProductName());
System.out.println("数据库版本:" + dbmd.getDatabaseProductVersion());
System.out.println("JDBC驱动名:" + dbmd.getDriverName());
System.out.println("JDBC驱动版本:" + dbmd.getDriverVersion());
System.out.println("--------------数据库-------------");
// 获得数据库列表
ResultSet databases = dbmd.getCatalogs();
// 输出数据库名
while(databases.next())
{
System.out.println(databases.getString("TABLE_CAT"));
}
System.out.println("--------------表-------------");
// 获得mydb数据库中的表名
ResultSet tables = dbmd.getTables("mydb", null, null, new String[]{"table"});
while(tables.next())
{
System.out.println(tables.getString("TABLE_NAME"));
}
System.out.println("--------------视图-------------");
// 获得mydb数据库中的表名
ResultSet views = dbmd.getTables("mydb", null, null, new String[]{"view"});
while(views.next())
{
System.out.println(views.getString("TABLE_NAME"));
}
System.out.println("--------------存储过程、函数-------------");
// 获得mydb数据库中的存储过程
ResultSet procfun = dbmd.getProcedures("mydb", null, null);
while(procfun.next())
{
System.out.println(procfun.getString("PROCEDURE_NAME"));
}
conn.close();
}
}
在运行上面的程序后,将会输出如下的信息(下面的输出信息只是我机器上的mysql配置,读者可能在自己机器上输出不同的信息):
数据库产品名:MySQL
数据库版本:5.0.21-community-nt
JDBC驱动名:MySQL-AB JDBC Driver
JDBC驱动版本:mysql-connector-java-5.0.7 ( $Date: 2007-03-09 22:13:57 +0100 (Fri, 09 Mar 2007) $, $Revision: 6341 $ )
--------------数据库-------------
information_schema
ersystem_development
hibernate
mydb
mysql
rails
--------------表-------------
t_books
t_booksale
t_image
--------------视图-------------
--------------存储过程、函数-------------
p_myproc