常用的接口和类

  1. Connection接口:用于连接数据库

  2. Statement和PreparedStatement:用于数据库增删改查

  3. ResultSet:接收和处理查询结果

  4. DriverManager:驱动管理类

JDBC程序的编写步骤

  1. 注册驱动:将数据库驱动加载到内存中并初始化

    1. 把jar放到项目的libs中
    2. 把jar添加到build path中 ,在jar包上选择右键,Build Path—>Add to Build Path
    3. 在代码中注册驱动
  2. 连接数据库:使用DriverManager和Connection

  3. 操作数据库

    1. 增、删、改:Statement或PreparedStatement
    2. 查询:Statement或PreparedStatement
    3. 结果处理:ResultSet
  4. 断开连接:关闭各种对应的资源

    URL说明

  5. url:统一资源定位符,通俗的讲就是网址

  6. url标准格式:协议://主机名:端口号/资源路径

  7. 对于mysql来说:

    1. jdbc:mysql://主机名:端口号/数据库名?其他的参数
    2. jdbc:mysql://localhost:3306/test

      代码演示

      添加数据

  8. 向数据库中添加一条记录代码演示 ```java package com.wisdom.java;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;

public class InsterJDBCTest01 { public static void main(String[] args) throws Exception{ // 1. 注册驱动程序 Class.forName(“com.mysql.jdbc.Driver”);

  1. // 2. 连接数据库
  2. String url = "jdbc:mysql://192.168.160.131:3306/subquery";
  3. Connection conn = DriverManager.getConnection(url, "root", "数据库密码");
  4. // 3. 操作数据库
  5. // a. 在dept表中添加一条数据
  6. String sql = "insert into dept values(60,'MANAGERE','BJ')";
  7. // b. 创建用来执行SQL语句的Statement对象
  8. Statement st = conn.createStatement();
  9. // c. 使用Statement对象执行数据,返回结果就是影响数据库的行数
  10. int len = st.executeUpdate(sql);
  11. // d. 判断是否执行成功
  12. System.out.println(len>0?"添加成功":"添加失败" );
  13. // 4. 释放资源
  14. st.close();
  15. conn.close();
  16. }

}


2. 根据键盘输入,将用户输入的信息添加至数据库
```java
package com.wisdom.java;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;

public class InsertJDBCTest02 {
    public static void main(String[] args) throws Exception{
        // 0. 获取用户输入
        Scanner sc = new Scanner(System.in);

        System.out.print("请输入部门编号 :");
        int deptNo = sc.nextInt();

        System.out.print("请输入部门名称 :");
        String deptName = sc.next();

        System.out.print("请输入部门所在地 :");
        String deptLoc = sc.next();

        // 1. 注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        // 2. 连接数据库
        String url = "jdbc:mysql://192.168.160.131:3306/subquery";
        Connection conn = DriverManager.getConnection(url,"root","数据库密码");

        // 3. 操作数据库
        // a. 在dept表中根据用户输入插入一条数据
        String sql = "insert into dept values(" + deptNo + ",'" + deptName + "','" + deptLoc + "')";
        // b. 创建用来执行SQL语句的Statement对象
        Statement st = conn.createStatement();
        // c. 执行语句
        int len = st.executeUpdate(sql);
        System.out.println(len>0?"插入成功":"插入失败");

        st.close();
        conn.close();

    }

}

删除数据

  1. 删除一条记录 ```java package com.wisdom.java;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;

public class DeleteJDBCTest01 { public static void main(String[] args) throws Exception{ // 1. 注册驱动 Class.forName(“com.mysql.jdbc.Driver”);

    // 2. 连接数据库
    String url = "jdbc:mysql://192.168.160.131:3306/subquery";
    Connection conn = DriverManager.getConnection(url, "root", "数据库密码");

    // 3. 操作数据库
    String sql = "delete from dept where deptno = 70";
    Statement st = conn.createStatement();
    int len = st.executeUpdate(sql);
    System.out.println(len>0?"删除成功":"删除失败");

    // 4. 关闭对应资源
    st.close();
    conn.close();    
}

}

<a name="F8w8J"></a>
### 修改数据

1. 修改一条记录
```java
package com.wisdom.java;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class UpdateJDBCTest01 {
    public static void main(String[] agrs) throws Exception{
        // 1. 注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        // 2. 连接数据库
        String url = "jdbc:mysql://192.168.160.131:3306/subquery";
        Connection conn = DriverManager.getConnection(url, "root", "数据库密码");

        // 3. 操作数据库
        String sql = "update dept set loc = 'TJ' where deptno = 60";
        Statement st = conn.createStatement();
        int len = st.executeUpdate(sql);
        System.out.println(len>0?"修改成功":"修改失败");

        // 4. 关闭 数据库
        st.close();
        conn.close();
    }
}

查询数据

  1. 查询数据 ```java package com.wisdom.java;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;

import org.junit.Test;

public class SelectJDBCTest01 { /*

 * 查询所有数据
 * */
@Test
public void select01() throws Exception{
    // 1. 加载驱动
    Class.forName("com.mysql.jdbc.Driver");

    // 2. 连接数据库
    String url = "jdbc:mysql://192.168.160.131:3306/subquery";
    Connection conn = DriverManager.getConnection(url,"root","数据库密码");

    // 3. 操作数据库
    String sql = "select * from dept";
    Statement st = conn.createStatement();
    ResultSet rs= st.executeQuery(sql);

    // 4. 遍历结果集
    while(rs.next()){
        int deptno = rs.getInt("deptno");
        String dname = rs.getString("dname");
        String loc = rs.getString("loc");
        System.out.println(deptno + "\t" + dname + "\t" + loc);
    }

    // 5. 关闭数据库连接
    rs.close();
    st.close();
    conn.close();
}

/*
 * 查询某几列
 * */
@Test
public void select02() throws Exception{
    // 1. 加载驱动
    Class.forName("com.mysql.jdbc.Driver");

    // 2. 连接数据库
    String url = "jdbc:mysql://192.168.160.131:3306/subquery";
    Connection conn = DriverManager.getConnection(url,"root","数据库密码");

    // 3. 操作数据库
    String sql = "select deptno,dname from dept";
    Statement st = conn.createStatement();
    ResultSet rs= st.executeQuery(sql);

    // 4. 遍历结果集
    while(rs.next()){
        int deptno = rs.getInt("deptno");
        String dname = rs.getString("dname");
        System.out.println(deptno + "\t" + dname );
    }

    // 5. 关闭数据库连接
    rs.close();
    st.close();
    conn.close();
}

/*
 * 按照列索引查询
 * */
@Test
public void select03() throws Exception{
    // 1. 加载驱动
    Class.forName("com.mysql.jdbc.Driver");

    // 2. 连接数据库
    String url = "jdbc:mysql://192.168.160.131:3306/subquery";
    Connection conn = DriverManager.getConnection(url,"root","数据库密码");

    // 3. 操作数据库
    String sql = "select deptno,dname,loc from dept";
    Statement st = conn.createStatement();
    ResultSet rs= st.executeQuery(sql);

    // 4. 遍历结果集
    while(rs.next()){
        // 1就代表第一个字段
        int deptno = rs.getInt(1);
        String dname = rs.getString(2);
        String loc = rs.getString(3);
        System.out.println(deptno + "\t" + dname + "\t" + loc );
    }

    // 5. 关闭数据库连接
    rs.close();
    st.close();
    conn.close();
}

/*
 * 也可以用Object代替数据类型
 * */
@Test
public void select04() throws Exception{
    // 1. 加载驱动
    Class.forName("com.mysql.jdbc.Driver");

    // 2. 连接数据库
    String url = "jdbc:mysql://192.168.160.131:3306/subquery";
    Connection conn = DriverManager.getConnection(url,"root","数据库密码");

    // 3. 操作数据库
    String sql = "select deptno,dname,loc from dept";
    Statement st = conn.createStatement();
    ResultSet rs= st.executeQuery(sql);

    // 4. 遍历结果集
    while(rs.next()){            
        System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) );
    }

    // 5. 关闭数据库连接
    rs.close();
    st.close();
    conn.close();
}

}

```