一. 概念
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 插入操作代码
publicclassDemo1 { publicstaticvoidmain(String[] args) throwsSQLException { Scannerscan=newScanner(System.in); // 1.创建并初始化一个数据源;//DataSource是一个接口,向上转型DataSourcedataSource=newMysqlDataSource(); //向下转型 ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("123456"); // 2.与数据库服务器建立连接;Connectionconnection=dataSource.getConnection(); System.out.println("请输入学生姓名:"); Stringname=scan.next(); System.out.println("请输入学生年龄:"); intage=scan.nextInt(); //从控制台读取用户输入的内容// 3.构造SQL语句;Stringsql="insert into student value(?,?)"; PreparedStatementstatement=connection.prepareStatement(sql); statement.setString(1,name); statement.setInt(2,age); System.out.println(statement); // 4.执行SQL语句;intret=statement.executeUpdate(); System.out.println(ret); // 5.释放必要的资源;statement.close(); connection.close(); } }
这这里就完成了一个简单的插入操作;
3.3 查询操作代码
publicclassSelectOperate { publicstaticvoidmain(String[] args) throwsSQLException { // 1.创建并初始化数据源DataSourcedataSource=newMysqlDataSource(); ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("123456"); // 2.建立连接Connectionconnection=dataSource.getConnection(); // 3.构造SQL语句Stringsql="select * from student"; PreparedStatementstatement=connection.prepareStatement(sql); // 4.执行SQL语句ResultSetresultSet=statement.executeQuery(); // 5.遍历结果while (resultSet.next()) { Stringname=resultSet.getString("name"); intage=resultSet.getInt("age"); System.out.println("name = "+name+"\n"+" age ="+age); } // 6.释放资源resultSet.close(); statement.close(); connection.close(); } }