目录
一. 概念
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问;
二. 工作原理
JDBC 架构
分为双层架构和三层架构。
双层
作用:此架构中,Java Applet 或应用直接访问数据源。
条件:要求 Driver 能与访问的数据库交互。
机制:用户命令传给数据库或其他数据源,随之结果被返回。
部署:数据源可以在另一台机器上,用户通过网络连接,称为 C/S配置(可以是内联网或互联网)。
三层
侧架构特殊之处在于,引入中间层服务。
流程:命令和结构都会经过该层。
吸引:可以增加企业数据的访问控制,以及多种类型的更新;另外,也可简化应用的部署,并在多数情况下有性能优势。
- 历史趋势: 以往,因性能问题,中间层都用 C 或 C++ 编写,随着优化编译器(将 Java 字节码 转为 高效的 特定机器码)和技术的发展,如EJB,Java 开始用于中间层的开发这也让 Java 的优势突显出现出来,使用 Java 作为服务器代码语言,JDBC随之被重视。
三. JDBC编程
3.1 导入jar包
在使用JDBC之前我们要导入一个 jar包,这个包我们可以去官网下载,安装步骤如下:
1.首先在你的项目下创建一个Directory
2.将下载好的jar包复制粘贴到刚在创建好的Directory包下
3. 在刚刚创建好的Directory包下右键,点击Add,这样idea就能识别jar下面的内容了
如果在jar包下能看到内容,说明就成功了:
JDBC编程步骤:
- 创建并初始化一个数据源;
- 与数据库服务器建立连接;
- 构造SQL语句;
- 执行SQL语句;
- 释放必要的资源;
3.2 插入操作代码
public class Demo1 {
public static void main(String[] args) throws SQLException {
Scanner scan = new Scanner(System.in);
// 1.创建并初始化一个数据源;
//DataSource是一个接口,向上转型
DataSource dataSource = new MysqlDataSource();
//向下转型
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
// 2.与数据库服务器建立连接;
Connection connection = dataSource.getConnection();
System.out.println("请输入学生姓名:");
String name = scan.next();
System.out.println("请输入学生年龄:");
int age = scan.nextInt();
//从控制台读取用户输入的内容
// 3.构造SQL语句;
String sql = "insert into student value(?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,age);
System.out.println(statement);
// 4.执行SQL语句;
int ret = statement.executeUpdate();
System.out.println(ret);
// 5.释放必要的资源;
statement.close();
connection.close();
}
}
这这里就完成了一个简单的插入操作;
3.3 查询操作代码
public class SelectOperate {
public static void main(String[] args) throws SQLException {
// 1.创建并初始化数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
// 2.建立连接
Connection connection = dataSource.getConnection();
// 3.构造SQL语句
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
// 4.执行SQL语句
ResultSet resultSet = statement.executeQuery();
// 5.遍历结果
while (resultSet.next()) {
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("name = " + name + "\n" + " age =" + age);
}
// 6.释放资源
resultSet.close();
statement.close();
connection.close();
}
}