mysql数据库编程---JDBC增删改查

  • 数据库编程是指通过代码实现一个MYSQL客户端,同样是通过网络和服务器进行交互,数据库会给我们提供一组API来方便实现

API:application programming interface ,提供了一组函数/类/或方法,让用户直接去使用,有时可称为接口。

  • MYSQL,ORACLE,SQL SERVER 等数据库都有不同的API,通过适配器(adapter)把不同种类的API转成JDBC统一的API 

适配器(adapter):java中称为数据库驱动程序,不同数据库需要不同的驱动程序,java中的数据库驱动程序是一个独立的“jar包”,一堆二进制文件的集合。

  • maven仓库:jar包的应用商店,在这里下载不同数据库对应的jar包,注意版本对应
  • 导入jar包:  
  1. 在IDEA的工程中创建一个目录,把jar包拷贝进去。
  2. 配置项目的一些属性,让项目能够找到jar包。
  3. JDBC中以DataSourse API为主。 
  • 具体的程序实现:  
  1.  先创建Database对象。
  2. 创建Connection对象,和数据库建立连接(相当于打开了mysql客户端,输入了密码,连接成功)。
  3. 拼装SQL语句,用到了prepare,Statement对象(客户端输入sql语句)。
  4. 执行SQL语句(在客户端敲下回车)。
  5. 查看服务器返回的结果(客户端显示结果)。
  6. 关闭连接,释放资源,后创建的先释放(退出客户端)。
  • 程序 
  1.  JDBC插入数据
package jar1024;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

//JDBC插入数据
public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        //1.先创建DataSource对象(DataSource对象生命周期应该是要跟随整个程序)
        DataSource dataSource = new MysqlDataSource();
        //接下来针对datasource进行配置,以便后面能顺利访问数据库
        //主要配置三个方面信息,URL,User,Password 需要向下转型
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了
        //Connection的包是java.sql
        //如果不正常就会抛出SQLexception异常
        //connection生命周期较短,每次请求可创建一个新的connection
        Connection connection = dataSource.getConnection();

        //3.拼装sql语句 ,用到prepare,Statement 对象
        int id = 1;
        String name = "cao";
        int classId = 10;
        //?是占位符,可以把具体的变量的值替换到?位置
        String sql = "insert into student values(?,?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        //1,2,3相当于?的下标
        statement.setInt(1,id);
        statement.setString(2,name);
        statement.setInt(3,classId);
        System.out.println("statement" + statement);

        //4.拼装好之后,执行SQL
        //insert  delete  update 都使用executeUpdate 方法来执行
        //select 就使用executeQuery来执行
        //返回值表示此次操作修改了多少行
        int ret = statement.executeUpdate();
        System.out.println("ret" + ret);

        //5.执行完毕后,关闭释放相关资源
        //一定是后创建的先释放,注意顺序
        statement.close();
        connection.close();


    }
}

2. JDBC查找

package jar1024;

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;


//JDBC查找
public class TestJDBCSelect {
    public static void main(String[] args) throws SQLException {
        //1.先创建DataSource对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了
        Connection connection = dataSource.getConnection();

        //3.拼装sql语句 ,用到prepareStatement 对象
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        //4.拼装好之后,执行SQL
        ResultSet resultSet = statement.executeQuery();

        //5.遍历结果集,遍历过程类似于使用迭代器遍历集合类
        //结果集相当于一张表,每张表有很多行,每一行是一条记录(又包含很多列)
        //next()一方面判定当前是否存在下一行,另一方面如果存在下一行就获取到这一行
        //可以直观地把resultSet对象想象成是一个光标
        while(resultSet.next()) {
            //resultSet的光标指向当前行,就可以把当前行中的列数据获取到
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int classId = resultSet.getInt("classId");
            System.out.println(" id: " + id + " name: " + name + " classId: " + classId);
        }

        //6.执行完毕后,关闭释放相关资源
        //一定是后创建的先释放,注意顺序
        resultSet.close();
        statement.close();
        connection.close();


    }
}

3. JDBC删除

package jar1024;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;


//JDBC删除
public class TestJDBCDelete {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的学生姓名: ");
        String name = scanner.next();

        //1.先创建DataSource对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了
        Connection connection = dataSource.getConnection();

        //3.拼装sql语句 ,用到prepareStatement 对象
        String sql = "delete from student where name = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);

        //4.拼装好之后,执行SQL
        int ret = statement.executeUpdate();
        if (ret == 1) {
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }

        //5.关闭并释放资源
        statement.close();
        connection.close();
    }
}

4. JDBC修改

package jar1024;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;


//JDBC修改
public class TestJDBCUpdate {
    public static void main(String[] args) throws SQLException {
        //让用户输入要修改id为n的同学姓名
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要修改的学生id: ");
        int id = scanner.nextInt();
        System.out.println("请输入要修改的同学姓名: ");
        String name = scanner.next();

        //1.先创建DataSource对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了
        Connection connection = dataSource.getConnection();

        //3.拼装sql语句 ,用到prepareStatement 对象
        String sql = "update student set name = ? where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);

        //4.拼装好之后,执行SQL
        int ret = statement.executeUpdate();
        if (ret == 1) {
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }

        //5.关闭并释放资源
        statement.close();
        connection.close();

    }
}

 

 

 

 

 

 

 

上一篇:连接池连接数设置为多少合适


下一篇:mysql数据库编程-JDBC增删改查