MySQL的JDBC编程(Java)

MySQL的JDBC编程(Java)

1.创建项目

2.2.引入依赖~ JDBC编程需要用到mysql的驱动包. (驱动包就是把mysql自身的api给转换成jdbc风格的.)驱动包是mysql官方提供的.

1)下载驱动包,可以去mysql官方网站下载,但是最好的选择可以去maven中央仓库来下载.

地址: Maven Repository: mysql jdbc (mvnrepository.com)

在这里插入图片描述

2)导入到项目中

a)创建个目录,随便起个名字,例如叫做lib

b)把刚才下载的jar文件拷贝到刚才的目录中~

c)右键刚才的目录,有一个选项,叫做add as library

点击这个选项,才能把这个jar引入到项目中.此时项目才会从jar里面读取内部的.class .否则,代码就找不到jar中的一些类了

扫描二维码关注公众号,回复: 14673066 查看本文章

在这里插入图片描述

2.编写代码

在这里插入图片描述

1)插入数据操作

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

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

/**
 * JDBC编程 初始模板1
 * DriverManager这种写法,相比于DataSource来说,没有DataSource好用~~
 * 体现的一个关键要点DataSource内置了连接池~~在频繁创建/断开连接的时候,
 * 这里的DataSource就要比DriverManager的方式更加高效~
 */
public class TestJDBC {
    
    
    public static void main(String[] args) throws SQLException {
    
    
        //1.创建好数据源
        DataSource dataSource = new MysqlDataSource();
        //这个写法是向下转型,相关参数的类型也是DataSource类型,将来转换数据库代码几乎不用改动
        //设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_0514?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("tu110");

        //2.让代码和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        //3.操作数据库,以插入数据为例
        //  关键所在就是构造一个SQL语句,在JDBC中构造SQL可以不带上';', ';'只是在命令行中用来区分不同的语句
        String sql = "insert into student1 values(1, '张三')";
        //此处光是一个String类型的sql还不行,需要把这个String包装成一个"语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);

        //4.执行SQL
        //    SQL里面如果是 insert, update, delete都是用executeUpdate方法
        //    SQL里面如果是 select, 则使用 executeQuery方法
        // 返回值就表示这个操作影响到了几行(相当于控制台里执行完SQL命令后返回的数值一样)
        int ret = statement.executeUpdate();
        System.out.println(ret);

        //5.此时SQL已经执行完毕后,需要释放资源(先创建的后释放,后创建的先释放)
        statement.close();
        connection.close();
    }
}

上面代码插入的数据是固定的,改进一下由用户手动输入数据


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编程 初始模板2
 * 数据不写死,让用户灵活输入数据
 */
public class TestJDBC2 {
    
    
    public static void main(String[] args) throws SQLException {
    
    
    Scanner scanner = new Scanner(System.in);
    //1.创建好数据源
    DataSource dataSource = new MysqlDataSource();
    //这个写法是向下转型,相关参数的类型也是DataSource类型,将来转换数据库代码几乎不用改动
    //设置数据库所在的地址
    ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_0514?characterEncoding=utf8&useSSL=false");
    //设置登录数据库的用户名
    ((MysqlDataSource) dataSource).setUser("root");
    //设置登录数据库的密码
    ((MysqlDataSource) dataSource).setPassword("tu110");

    //2.让代码和数据库服务器建立连接
    Connection connection = dataSource.getConnection();

    	/*System.out.print("你要插入几条数据:");
   	 	int n = scanner.nextInt();*/
   	 	
        //2.1让用户通过控制台输入一下待插入的数据
        System.out.print("请输入学号: ");
        int id = scanner.nextInt();
        System.out.print("请输入姓名: ");
        String name = scanner.next();

        //3.操作数据库,以插入数据为例
        //  关键所在就是构造一个SQL语句,在JDBC中构造SQL可以不带上';', ';'只是在命令行中用来区分不同的语句
        //String sql = "insert into student1 values(1, '张三')";
        //使用?告诉java程序目前还不知道字段的值,先占个位置
        String sql = "insert into student1 values(?,?)";

        //此处光是一个String类型的sql还不行,需要把这个String包装成一个"语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        //对?进行替换操作
        statement.setInt(1, id);
        statement.setString(2, name);
        System.out.println("statement" + statement);

        //4.执行SQL
        //    SQL里面如果是 insert, update, delete都是用executeUpdate方法
        //    SQL里面如果是 select, 则使用 executeQuery方法
        // 返回值就表示这个操作影响到了几行(相当于控制台里执行完SQL命令后返回的数值一样)
        int ret = statement.executeUpdate();
        System.out.println(ret);

        //5.此时SQL已经执行完毕后,需要释放资源(先创建的后释放,后创建的先释放)
        statement.close();
        connection.close();
    }
}

2)删除操作

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);
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_0514?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("tu110");

        Connection connection = dataSource.getConnection();

        System.out.print("请输入要删除的id: ");
        int id = scanner.nextInt();

        String sql = "delete from student1 where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1, id);
        System.out.println("statement" + statement);

        int ret = statement.executeUpdate();
        System.out.println("ret= " + ret);

        statement.close();
        connection.close();
    }
}

3)修改操作

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编程修改操作
 * 根据用户输入的Id来修改对应的名字
 */
public class TestJDBCUpdate {
    
    
    public static void main(String[] args) throws SQLException {
    
    
        Scanner scanner = new Scanner(System.in);
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_0514?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("tu110");
        Connection connection = dataSource.getConnection();
        System.out.print("请输入要修改的学生id: ");
        int id = scanner.nextInt();
        System.out.print("请输入学生名字: ");
        String name = scanner.next();
        String sql = "update student1 set name = ? where id = ?";
        PreparedStatement statement= connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);
        System.out.println("statement" + statement);
        int ret = statement.executeUpdate();
        System.out.println("ret " + ret);
        statement.close();
        connection.close();
    }
}

4)查询操作

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 {
    
    
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_0514?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("tu110");
        Connection connection = dataSource.getConnection();
        String sql = "select * from student1";
        PreparedStatement statement = connection.prepareStatement(sql);

        //执行SQL的查询操作,就需要使用executeQuery
        //查询操作返回的不是int而是一个"临时表",使用ResultSet表示这个表
        ResultSet resultSet = statement.executeQuery();

        //遍历结果集合(返回的临时表),先获取每一行,在获取每一行中的若干列
        //next()方法表示获取到一行的记录,同时把光标往后移动一行
        //如果遍历到表的结束位置都没找到,则会返回false
        //        +------+--------+
        //        | id   | name   |
        //        +------+--------+
        //        |    1 | 张三   |
        //        |    2 | 赵六   |
        //        |    3 | 王五   |
        //        |    1 | 张三   |
        //        +------+--------+
        while(resultSet.next()){
    
    
            //固定写法,不可以for each来遍历
            //针对当前这一行来获取当前的列
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id= " + id + ", name= " + name);
        }

        //释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

猜你喜欢

转载自blog.csdn.net/TuttuYYDS/article/details/125013153