介绍JDBC快速入门使用到的包和类
- java.sql 所有与JDBC访问数据库相关的类和接口
- javax.sql 用到数据库连接池 数据库的扩展包,提供数据库操作额外一些功能,如:连接池
- DrierManager 驱动管理 注册驱动 还有获取数据库连接对象
- Connection 连接对象 用于创建执行sql对象 Statement 、PreparedStatement对象
- Statement sql语句执行对象,用于将sql 语句发送给数据库服务器
- PreparedStatement sql语句执行对象 是Statement接口的子接口
- ResultSet 用于封装从数据库查询出来的结果值
DriverManager类 - 从JDBC3开始,可以不用注册驱动可以直接使用。Class.forName();
- Connection getConnection(url,user,password):可以获取到数据库的连接对象
- Connection getConnection(String url,Properties info); 通过连接字符串和属性对象获取数据连接对象
- user 登录数据库用户名
- password 登录数据库的密码
- url 连接数据库的路径 对于mysql 而言 jdbc:mysql://服务器ip地址:端口号3306/数据库名称?[参数名 = 参数值]
- 驱动类路径 com.mysql.jdbc.Driver
- jdbc:mysql://服务器ip地址:端口号3306/数据库名称?[参数名= 参数值],如果数据库的服务器是在本地中,省略掉ip地址和端口号—》jdbc:mysql:///数据库名称?[参数名=参数值] 如果数据库传输时引发了乱码,后面可以使用参数 characterEncoding = utf8 jdbc:mysql:///数据库名称?characterEncoding = utf8
Connection接口
- 作用: 连接数据库,他是一个接口,有具体的厂商来提供具体的实现类,代表的是一个连接对象
- Statement createStatement() 创建一个sql 执行对象
- PreparStatement preparedStatement() 创建一个sql预处理对象
Statement接口
作用:用来执行sql语句,本质是把sql语句发送给数据库服务器
- int executeUpdate(String sql) 用于把sql语句发送给服务器,执行增删改操作,返回值int 影响数据库的记录数(行)
- ResultSet executeQuery(String sql) 用于把sql语句发送给服务器,执行查询操作。返回值ResultSet查询返回的结果集
PreparedStatement
- 执行sql的对象
- 会防止一些sql非法注入问题,在拼接sql语句时,可能会造成安全问题。如:
- " select * from account where username like '% " +username + " % ’ and balance = ’ " + balance + " ’ + " or 1 = 1 "
- 此时出现 “or 1=1 ”非法拼接问题
- 使用预编译的sql,参数使用?作为占位符
- 操作:
- 在sql语句中涉及到参数时使用?代替具体的数据 如:select * from user where username = ? and password = ?
- 使用连接对象执行sql语句获取预编译对象 connection.preparedStatement(String sql)
- 给?赋值:
使用方法:setXxx(?索引下标,?对应的实际值)
- 使用预编译对象执行sql,获取返回的结果集值–
>preparedStatement.executeQuery();
- 处理结果
- 释放资源
释放资源
- 需要释放资源对象:ResultSet对象 Statement对象 Connection对象
- 释放的顺序:先开后关,后开先关 ResulSet–>Statement–>Connection
- 释放资源:使用finally语句块,一定会被加载到。不能单独使用,需要搭配try语句块