一, 概念
1, 什么是 JDBC?
JDBC(Java Data Base Connectivity,java 数据库连接) 是一种用于执行 SQL 语句的 Java API, 可以为多种关系数据库提供统一访问, 它由一组用 Java 语言编写的类和接口组成. JDBC 提供了一种基准, 据
此可以构建更高级的工具和接口, 使数据库开发者能够编写数据库的程序. 简单地说, JDBC 可做三件事: 与数据库建立连接, 发送 操作数据库的语句并处理结果.
2,JDBC 有什么用呢?
我们用 JAVA 就能连接到数据库; 创建 SQL 或者 MySQL 语句; 执行 SQL 或 MySQL 的查询数据库; 查看和修改结果记录.
二, 连接常用的接口
提供的接口包括: JAVA API: 提供对 JDBC 的管理链接; JAVA Driver API: 支持 JDBC 管理到驱动器连接.
1,DriverManager : 这个类管理数据库驱动程序的列表. 内容是否符合从 Java 应用程序使用的通信子协议正确的数据
库驱动程序的连接请求. 识别 JDBC 在一定子协议的第一个驱动器被用来建立数据库连接.
2,Driver : 此接口处理与数据库服务器通信. 很少直接与驱动程序对象. 相反, 使用 DriverManager 中的对象, 它管理
此类型的对象. 它也抽象的与驱动程序对象工作相关的详细信息.
3,Connection : 此接口与接触数据库的所有方法. 连接对象表示通信上下文, 即, 与数据库中的所有的通信是通过唯一的连接对象.
4,Statement : 可以使用这个接口创建的对象的 SQL 语句提交到数据库. 一些派生的接口接受除执行存储过程的参数.
5,ResultSet : 这些对象保存从数据库后, 执行使用 Statement 对象的 SQL http://www.yiibai.com/sql/ 查询中检索数据. 它作为一个迭代器, 让你可以通过移动它的数据.
创建 JDBC 的七大步骤:
第一步: 导入工具包:
- import java.sql.*;
- import javax.sql.*;
第二步: 注册 jdbc 驱动程序
第三步: Class.forName( ....);
第四步: 使用 DriverManager.getConnection(); 方法来创建一个 Connection 对象, 它代表一个物理连接的数据库.
第五步: 执行查询: 使用一个对象类型 Statement 或 PreparedStatement() 构建, 并提交一个 SQL 语句到数据库.
第六步: 从结果集中提取数据; 这一步是必需的情况下, 从数据库中获取数据. 可以使用适当的 ResultSet.getXXX() 方法来检索
第七步: 清理环境: 关闭使用的数据库资源.
我们用代码简单的来实现数据库的连接 代码如下:
- package pkg1;
- import java.sql.*;
- import javax.sql.*;
- public class Test{
- //Driver 类全名
- private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
- //jdbc 协议: 子协议://ip: 端口号 /
- private static final String URL = "jdbc:sqlserver://localhost:1433;databasename=";
- // 数据库名
- private static final String DATABASE_NAME = "oa";
- // 数据库用户名
- private static final String USER_NAME = "sa";
- // 数据库密码
- private static final String PASSWORD = "123456";
- public static void main(String args[]){
- try{
- // 加载驱动程序: 它通过反射创建一个 driver 对象.
- Class.forName( DRIVER );
- //1. 打开 Miccorsoft SQL Server Managerment Studio 并且连接
- Connection conn = DriverManager.getConnection( URL+DATABASE_NAME,USER_NAME,PASSWORD);
- //2. 新建一个查询
- Statement stmt = conn.createStatement();
- //3. 执行查询 ---> 返回结果集
- ResultSet rs = stmt.executeQuery("select * from tt2");
- int k = 0;
- String g,d;
- int count = 0;
- while ( rs.next() ){
- k = rs.getInt("id");
- g = rs.getString("name");
- d = rs.getString("sex");
- System.out.println("编号:"+k+""+" 姓名:"+g+" "+" 性别:"+d);
- count++;
- }if(k==0){
- System.out.println("查找正常, 但没有记录");
- }
- // 关闭 Microsoft SQL Server Managerment Studio 连接
- rs.close();
- stmt.close();
- conn.close();
- System.out.println("连接的数据库是"+conn);
- }
- catch(ClassNotFoundException e){
- System.out.println("找不到驱动"+e.getMessage());
- }
- catch(Exception e){
- System.out.println("驱动已经加载成功, 发生其他异常"+e.getMessage());
- }
- }
- }
结果:
我们现在在 oa 数据库里面建了一张 tt2 的数据库表, 插上了数据
在对代码进行编译
可以看到已经把数据库里的内容读取出来了.
三, 补充内容
1,JDBC 结果集中为什么. next();?
将光标从当前位置向下移动一行. 结果集光标最初位于第一行之前; 对方法的第一次调用接着使第一行成为当前行; 第二次调用使第二行成为当前行, 依此类推.
如果当前行的输入流是打开的, 那么对方法 next 的调用将隐式关闭它. 读取新行时, ResultSet 对象的警告链接清除.
至于返回值, 如果新的当前行有效, 则为 true; 如果没有更多行, 则为 false.
但是要特别注意, next() 方法用一次, 游标就往后移了一位, 此时再使用 next() 来获取结果就是结果集中的第二个记录了.
来源: https://www.cnblogs.com/xym15079750872/p/10886738.html