JDBC:Java DataBase Connectivity
,即为Java数据库连接。
JDBC
是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。即:定义的一套操作所有关系型数据库的规则,是为接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
JDBC简单使用
快速入门
- 步骤:
- 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
2.右键–>Add As Library - 注册驱动
- 获取数据库连接对象 Connection
- 定义sql
- 获取执行sql语句的对象 Statement
- 执行sql,接受返回结果
- 处理结果
- 释放资源
- 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
1 | import java.sql.Connection; |
因为,在数据库连接、SQL语句的执行等等过程中,可能会发生异常,报错等。但是,数据库的资源要释放,故采用异常处理的方式,关闭数据库连接。
处理异常的方式:
1 | import java.sql.Connection; |
详解
DriverManager:驱动管理对象
用于注册驱动,jar包导入。
1
2
3
4
5
6
7
8通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}原因:文件的读取,只需要读取一次,即可拿到这些值。故使用静态代码块完成。
static Connection getConnection(String url, String user, String password)
Connection
:数据库连接对象功能:
1. 获取执行sql的对象 * `Statement createStatement()` * `PreparedStatement prepareStatement(String sql)` 2. 事务管理: * 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务 * 提交事务:commit() * 回滚事务:rollback() 3. `Statement`:执行sql的对象 **注意**:`createStatement`方法会造成SQL注入的问题,后期采用`PreparedStatement`来执行SQL对象,并采用预编译的方式,采用参数`?`作为占位符,且效率更高。 4. `ResultSet`:结果集对象,封装查询结果(next,类似指针移动取值方法) * boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true. * getXxx(参数):获取数据. - 其中Int代表列的编号,参数**从1开始**。 - String代表列的名称(参数)。
JDBC操作数据库的一般SQL语法
- 更新操作
String sql = "update account set balance = 500 where id = 1";
- 插入操作
String sql = "insert into account values(null,'Lisa',2000)";
- 删除操作
String sql = "delete from account where id = 3";
- 创建操作
1 | String sql = "create table student (id int primary key not null,name varchar(20))"; |
- 查询操作
1 | String sql = "select * from account"; |
参考文献
[1] Java数据库连接
[2] Itcast视频资料