JDBC(Java DataBase Connectivity)应用

JDBC: 通过java语言操作数据库
本质: Java公司定义的一套操作所有关系数据库的规则(接口)。各个数据库厂商去实现这套接口,提供数据库驱动jar包。这套接口编程,真正执行的代码是驱动jar包中的实现类。

JDBC入门

JDBC步骤
  1. 导入驱动jar包
    JDBC(Java DataBase Connectivity)应用_第1张图片
    JDBC(Java DataBase Connectivity)应用_第2张图片
//2 注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3 获取数据库连接对象
String url = "jdbc:mysql://localhost:3306/db1?useSSL=false";
Connection conn = DriverManager.getConnection(url, "root", "password");
//4 定义sql语句
String sql="update books set b_name='Love' where b_id=10";
//5 获取执行sql的对象
Statement st = conn.createStatement();
//6 执行sql
int count = st.executeUpdate(sql);//被修改的行数
//7 处理结果
System.out.println(count);
//8 释放资源
st.close();
conn.close();

对象讲解

  1. DriverManager驱动管理对象

将该类加载入内存中,会自动执行静态代码块执行registerDriver(Driver diriver)方法,生成DriverManger对象并返回
注意⚠️: 当前版本可以不写这一行语句,在进行操作时会自动注册。

#2 注册驱动 
Class.forName("com.mysql.jdbc.Driver")

  1. Connection数据库连接对象

获取方法:
通过静态方法类名直接调用DriverManager.getConnection直接生成对象。
url:指定连接数据库:jdbc:mysql://ip地址(域名):端口号/数据库名称
连接本地服务器可以直接简写:jdbc:mysql:///数据库名称

//3 获取数据库连接对象
String url = "jdbc:mysql://localhost:3306/db1?useSSL=false";
Connection conn = DriverManager.getConnection(url, "root", "password");

方法介绍:

方法 功能
createStatement() 获取执行sql的对象Statement
prepareStatement(String sql) 获取PreparedStatement对象,通常使用该对象

  1. Statement:用于执行静态SQL语句并返回其生成的结果的对象。
方法名 功能
boolean execute(String sql) 执行任意SQL语句
int executeUpdate(String sql) 执行DML(insert,update,delete)语句DDL(create,alter,drop)语句。返回值int是数据库中被影响的行数,可以通过返回值判断DML语句是否成功
ResultSet executeQuery​(String sql) 执行DQL(select)语句,返回一个 ResultSet对象。
  1. ResultSet结果集对象
方法名 功能
next() 将光标从当前位置向前移动一行。
getxxx()如getInt(),getString(),两个重载方法输入Int或String类型数据,int表示编号从1开始获取当前行第几列数据,String作为名称获取列数据 获取数据—getInt():检索此 ResultSet对象的当前行中指定列的值为Java编程语言中的 int 。
//5 执行sql,查询语句返回 ResultSet类型
resultSet = statement.executeQuery(sql);//影响的行数
//6 处理结果
while(resultSet.next()){
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
String author = resultSet.getString("Authors");
System.out.println(id+"--"+name+"--"+author);
}
  1. PrepareStatement执行sql对象
    SQL注入问题 :在拼接sql时,有一些sql的特殊关键字与字符串拼接,造成安全问题
    例如:登陆用户和密码,输入用户随便 输入密码使用a’ or 'a'='a
    预编译SQL: 参数使用作为占位符,在执行sql时进行赋值。

使用PrepareStatement的核心步骤

c = JDBCUtils.getConnection();
//sql语句中 用问号代替字符拼接
String sql = "select * from user where username = ? and password = ?";
//获取sql对象
ps = c.prepareStatement(sql);
//给?赋值
ps.setString(1,username);
ps.setString(2,password);
//PrepareStatement中执行方法可以不传入sql
rs = ps.executeQuery();

return rs.next();

通常使用PrepareStatement进行数据库操作执行。

JDBC控制事务

使用Connection对象来管理事务

方法 功能
setAutoCommit:调用该方法设置参数为false即开启事务 开启事务
commit() 提交事务
rollback() 回滚事务
try{
	connection.setAutoCommit(false);
	中间步骤...
	commit();//没有出错
}catch(Exception e){
		e.printStackTrace();
		//事务回滚
        if (c!=null) {
            try {
                c.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
	}

你可能感兴趣的:(数据库)