JDBC

本文详细介绍了JDBC的核心组件及其使用方法,包括DriverManager、Connection、Statement等接口和类的功能及应用场景,还提供了如何调用存储过程和函数的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jdbc:主要由以下界面(interface) 和类组成:
?? Driver (interface)
?? DriverManager (class)
?? Connection (interface)
?? Statement (interface)
?? PreparedStatement (interface)
?? CallableStatement (interface)
?? ResultSet (interface)
?? DatabaseMetaData (interface)
?? ResultSetMetaData (interface)
?? Types (class)


java.sql.DriveManager:
用来处理装载驱动程序并且为创建新的数据库连接提供支持
java.sql.Connection:
完成对某一指定数据库连接功能
java.sql.Statement:
在一个给定的连接中作为SQL执行声明的容器;(执行静态sql语句)
它包含了两个重要的子类型:
java.sql.PrepareStatement:
用于执行预编译的SQL 声明
java.sql.CallableStatement:
用于执行数据库中存储的过程的调用
java.sql.ResultSet:
控制对于给定声明取得结果列的途径 (游标对象 抓取行)
可以用Connection 接口的getAutocommit()方法,
检验数据库的目前自动提交模式设置。
用命令con.setAutoCommit(false) 方法关闭自动提交模式。
用con.commit() 命令提交事务。
用con.rollback() 回滚一个事务

存储过程的调用:
{call AuthorList} 如果过程不需要参数
{call AuthorList[(?, ?)]} 如果过程需要两个参数


函数的调用: {? = call AuthorList[(?, ?)]} 如果参数需要两个参数并返回一个


批处理:
ps.addBatch();//将数据打包 ????
ps.executeBatch();//执行打包后的sql 


DatabaseMetaData接口:
提供:getColumns()方法,该方法需要传进4个参数:
#---第一个参数:数据库名称
MySQL:填入对应的数据库名
oracle:null或Connection的实例对象中的getCatalog()方法
#---第二个参数:模式
数据库的登录名,orcl其登录名要大写,MySQL可以忽略
#---第三个参数:表名
#---第四个参数:列类型
为空时,获取表对应的所有列,不为空的时候获取该值的列的所有信息


ResultSet rs = stmt.executeQuery();
?? ResultSetMetaData rsmd = rs.getMetaData();
?? rsmd.getColumnCount() //返回目前ResultSet 对象的列数。
?? rsmd.getColumnDisplaySize(int column); //返回column指定的列的最大宽度。
?? rsmd.getColumnLabel(int column) //返回column 指定列的标签。
?? rsmd.getColumnName(int column) //返回column 指定列的列名。


//获取列名和列数据
Connection conn = DbUtils.getConnection();

Statement statement = conn.createStatement();


ResultSet resultSet = statement.executeQuery("select * from dept ");


ResultSetMetaData metaData = resultSet.getMetaData();

for (int i = 0; i < metaData.getColumnCount(); i++) {
// resultSet数据下标从1开始
String columnName = metaData.getColumnName(i + 1);
int type = metaData.getColumnType(i + 1);

System.out.print(columnName + "\t");
}
System.out.println();
// 获取数据
while (resultSet.next()) {
for (int i = 0; i < metaData.getColumnCount(); i++) {
// resultSet数据下标从1开始
System.out.print(resultSet.getString(i + 1) + "\t");
}
System.out.println();


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值