javaweb:JDBC元数据API、Apache—DBUtils框架

JDBC元数据

元数据分类:数据库元数据、参数元数据、结果集元数据

元数据- MetaData

元数据:JDBC中可以使用元数据获取数据库、表、表中字段等一些信息。

元数据的作用:在JDBC中可以获取元数据的信息,通过元数据可以编写一些通用性较高的代码、框架。

数据库元数据: DataBaseMetaData(Connection对象创建的

获取数据库元数据:Connection.getMetaData()

DataBaseMetaData对象

获取数据库的链接的基本信息

getURL():返回一个String类对象,代表数据库的URL。

getUserName():返回连接当前数据库管理系统的用户名。

getDriverName():返回驱动驱动程序的名称。

获取表的基本信息

获取表的名称

getPrimaryKeys(String catalog, String schema, String table):返回指定表主键的结果集

package cn.itcast.metaData;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import cn.itcast.utils.MyJdbcUtil2;

/**
 * 数据库元数据
 * @author Administrator
 *
 */
public class DataBaseMetaDataDemo {
	
	@Test
	public void run(){
		Connection conn = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			// 获取资源
			conn = MyJdbcUtil2.getConnection();
			// 获取数据库元数据
			DatabaseMetaData metaData = conn.getMetaData();
			// 获取url  链接的基本信息
			System.out.println(metaData.getURL());
			System.out.println(metaData.getUserName());
			System.out.println(metaData.getDriverName());
			
			// 获取主键的信息
			rs = metaData.getPrimaryKeys(null, null, "t_account");
			if(rs.next()){
				// 获取
				System.out.println(rs.getString("TABLE_NAME"));
				System.out.println(rs.getString("COLUMN_NAME"));
				System.out.println(rs.getString("PK_NAME"));
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			MyJdbcUtil2.release(rs, stmt, conn);
		}
	}

}

参数元数据: ParameterMetaData

作用:可以获取SQL语句中?号的个数、类型等。

如花获得参数元数据:PreparedStatement . getParameterMetaData()

getParameterCount()

获得指定参数的个数

getParameterTypeName(int param)

获得指定参数的sql类型

getParameterType异常处理

Parameter metadata not available for the given statement

MySQL中默认不让获取参数的类型,所有需要在url后面添加该参数

url后面拼接参数

?generateSimpleParameterMetadata=true

使用参数元数据获取的参数类型不正确,这是因为MySQL支持的不好。想要获取正确的参数类型,需要使用结果集元数据。

package cn.itcast.metaData;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;

import org.junit.Test;

import cn.itcast.utils.MyJdbcUtil2;

/**
 * 参数元数据
 * @author Administrator
 *
 */
public class ParameterMetaDataDemo {
	
	@Test
	public void run(){
		Connection conn = null;
		PreparedStatement stmt = null;
		try {
			// 获取资源
			conn = MyJdbcUtil2.getConnection();
			// 编写SQL语句
			String sql = "update t_account set money = ? ,username = ? where id = ?";
			// 预编译
			stmt = conn.prepareStatement(sql);
			// 获取参数元数据
			ParameterMetaData metaData  = stmt.getParameterMetaData();
			// 获取参数的个数
			int count = metaData.getParameterCount();
			System.out.println("参数的个数是:"+count);
			
			String msg = metaData.getParameterTypeName(1);
			System.out.println("参数的类型:"+msg);
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			MyJdbcUtil2.release(stmt, conn);
		}
	}
	

}

元数据- ResultSetMetaData

作用:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值