摄影分享
目录
数据库编程的必备条件
Java的数据库编程:JDBC
JDBC的使用步骤
1. 创建数据源DataSourece
2.连接数据库
3.构造并执行sql语句
4.遍历结果集合
5.释放资源
数据库编程的必备条件
- 编程语言,如Java,C、C++、Python等
- 数据库,如Oracle,MySQL,SQL Server等
- 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。
在实际开发中,SQL很少是手动输入的,绝大多数SQL都是通过代码,自动执行的。就需要让其他编程语言来操作数据库服务器。
MySQL中提供了很多API(Application Programming Interface)(提供的功能/服务)。
Java的标准库,就会给我们提供一些API。这个API中有一些随机数,scanner,集合类。数据库(MySQL)也会提供一组API,通过这组API就可以操作数据库,完成各种增删改查的操作。
Java的数据库编程:JDBC
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
JDBC的使用步骤
1. 创建数据源DataSourece
第一步,创建DataSource对象,用来描述数据库位置。
DataSource dataSource = new MysqlDataSource();
其中DataSource为标准库中java.sql里面的一个jdbc接口,MysqlDataSource是来源于我们所下载驱动包中的一个实现DataSource接口的类。
第二步设置数据库的位置“URL”,登录数据库的用户名和密码
//设置数据库所在地址
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false");
//设置登录数据库的用户名
((MysqlDataSource)dataSource).setUser("root");
//设置登录数据库的密码
((MysqlDataSource)dataSource).setPassword("0828");
jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false 是一个URL,也叫唯一资源地址符
具体含义为:URL类型声明://数据库的地址/数据库名?字符集编码&是否加密
上面的向上/向下转型是jdbc中比较常用的写法, 让后续的代码继续使用DataSoure类型的实例, 避免MysqlDataSource扩散到代码中的各个地方, 以此方便未来更换数据库, 更换时只需要修改一处代码即可.
User是用户名, root为数据库的默认用户名.
Password是登录数据库的密码, 即安装数据时, 我们自己所设的密码.
此时我们数据源创建的操作, 只是去描述了下服务器在那里, 访问哪个数据库, 编码方式是什么, 登陆账号密码是什么等等, 但还没有真正进行连接访问, 下面进行的连接操作, 是真正开始通过网络进行通信.
2.连接数据库
第三步,与数据库服务器建立连接,创建好数据源DataSource对象后,调用该对象的getConnection()方法,获取java.sql.Connection对象,此时就可以与数据库建立连接了。
Connection connection = dataSource.getConnection();
3.构造并执行sql语句
String sql = "select * from student2";
//将sql字符串包装成一个语句对象,表示待执行的sql的对象
PreparedStatement statement = connection.prepareStatement(sql);
//执行sql
int ret = statement.executeQuery();//返回值为受影响行数
要注意如果待执行的sql语句操作是insert, update, delete, 使用executeUpdate方法执行即可,返回值为影响数据的行数;
而如果待执行的sql语句操作是select, 则使用executeQuery方法执行,返回值是一个ResultSet结果表对象, 其中储存了查询到的的结果, 我们可以通过遍历该结果表来获取查询到的数据.
4.遍历结果集合
把resultSet想象成一个表格,同时表格这里有个光标。初始情况下光标指向表最上面。每次调用next,光标往下一行走,当光标指向某一行的时候,就可以通过getXXX来获取到当前这行里的数据。
while(resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = "+ id +",name = "+ name);
}
5.释放资源
第五步, 释放资源, 我们执行完毕sql语句后需要及时地将资源释放, 在JDBC编程中, 最常见需要释放的类或接口有三个, 分别是Connection, PreparedStatement, ResultSet, 要注意的是释放资源的顺序和开启资源的的顺序是相反的, 也就是先开启的要后释放。
//.释放资源
resultSet.close();
statement.close();
connection.close();
下面是完整的jdbc查找代码:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCInsertDemo {
public static void main(String[] args) throws SQLException {
//1.创建并初始化数据源
DataSource dataSource = new MysqlDataSource();
//设置数据库所在地址
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false");
//设置登录数据库的用户名
((MysqlDataSource)dataSource).setUser("root");
//设置登录数据库的密码
((MysqlDataSource)dataSource).setPassword("0828");
//2.建立连接
Connection connection = dataSource.getConnection();
//3.构造SQL
String sql = "select * from student2";
PreparedStatement statement = connection.prepareStatement(sql);
//4.执行SQL
ResultSet resultSet = statement.executeQuery();
//5.遍历结果集合
while(resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = "+ id +",name = "+ name);
}
//6.释放资源
resultSet.close();
statement.close();
connection.close();
}
}