概述
对象详解:
- DriverManager:驱动管理对象
- Connection:数据库连接对象
- Statement:执行sql语句对象
- ResultSet:结果集对象
- PreparedStatement:也是执行sql语句的对象,Statement的子类。
DriverManager
功能:
- 注册驱动
static void registerDriver(Driver driver):注册给定的驱动程序 DriverManager。
写代码时使用 Class.forname("com.mysql.jdbc.Driver");
这样写的原因为 在 com.mysql.jdbc.Driver类中存在静态代码块,在类的加载的时候就执行了该代码块中的代码:
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
MySQL 5以后的驱动jar包可以省略注册驱动的步骤。
- 获取数据库连接
方法:static Connection getConnection(String url, String user, String password);
参数: url 指定连接的路径
语法:jdbc:mysql://ip地址:端口号/数据库名称。
注意: 如果使用的是本机的MySQL服务器,并且端口号也是3306,则可以简写为:
jdbc:mysql:///day09
user:用户名
password:密码
Connection
功能:
- 获取执行sql的对象
Statement createStatement()
- 管理事务
1.开启事务 void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务。
2.提交事务:commit()
3.回滚事务rollback()
Statement
功能:执行sql
boolean execute(String sql):可以执行任意的sql。
int executeUpdate(String sql): 执行DML语句,DDL语句。
返回值为影响的行数,可以通过影响的行数判断DML语句是否执行成功。
executeQuery:执行DQL语句(select)。
.
ResultSet
封装查询结果的对象
方法:
next(): 游标向下移动一行,判断该行是否有数据,返回值为boolean类型,有数据为true,没有数据为false。
getXXX(“参数”):获取数据。(XXX代表数据类型)。
参数:
1.int类型,代表列的编号,从1开始
2.String类型,代表列的名称。
具体代码演示:
stmt = conn.createStatement();
//使用statement对象来操作数据库:
resultSet = stmt.executeQuery(sql);
resultSet.next();
int deptno = resultSet.getInt(1);
String Dname = resultSet.getString(2);
String LOC = resultSet.getString(3);
System.out.println(deptno + "---" + Dname + "---" + LOC);
ResultSet的遍历:
while (resultSet.next()){
//循环判断这个游标是否在最后一行末尾,如果不是就进入while循环,如果是,就跳出该循环。
int deptno = resultSet.getInt(1);
String Dname = resultSet.getString(2);
String LOC = resultSet.getString(3);
System.out.println(deptno + "---" + Dname + "---" + LOC);
}
PreparedStatement
预先创建的sql语句,可以有效的防止sql注入产生的安全问题。
和Statement不同的地方在于,PreparedStatement传入的sql语句,需要拼接的地方使用?来作为占位符,通过set方法来为占位符赋值。
sql语句的定义:
String sql1 = "update account set balance = balance - ? where id = ?";
String sql2 = "update account set balance = balance + ? where id = ?";
具体实现:
package com.ujiuye.CRUD;
import com.ujiuye.CRUD.JDBCUtil.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Test08 {
public static void main(String[] args) {
Connection con = null;
PreparedStatement pre1 = null;
PreparedStatement pre2 = null;
//1.获取连接
try {
con = JDBCUtil.getConnection();
String sql1 = "update account set balance = balance - ? where id = ?";
String sql2 = "update account set balance = balance + ? where id = ?";
con.setAutoCommit(false);
//传入sql语句
pre1 = con.prepareStatement(sql1);
pre2 = con.prepareStatement(sql2);
//为需要添加的地方设置值,有两个参数,第一个参数为问号的位置,第二个参数为问号的值。
pre1.setInt(1,500);
pre1.setInt(2,1);
pre2.setInt(1,500);
pre2.setInt(2,2);
pre1.executeUpdate();
pre2.executeUpdate();
con.commit();
} catch (Exception e) {
try {
if (con != null)con.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}finally {
JDBCUtil.close(pre1,con);
JDBCUtil.close(pre2,null);
}
}
}
最后
以上就是活泼楼房为你收集整理的JDBC各类型的对象详解的全部内容,希望文章能够帮你解决JDBC各类型的对象详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复