详解注释版jdbc连接mysql数据库+增删改查

book对象

/**
 * Created with IntelliJ IDEA.
 * Description:book对象
 * User: starry
 * Date: 2021 -03 -20
 * Time: 14:57
 */
public class Book {
    
    
    private int id;
    private String name;
    private String author;
    private float price;
    private int category_id;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public String getAuthor() {
    
    
        return author;
    }

    public void setAuthor(String author) {
    
    
        this.author = author;
    }

    public float getPrice() {
    
    
        return price;
    }

    public void setPrice(float price) {
    
    
        this.price = price;
    }

    public int getCategory_id() {
    
    
        return category_id;
    }

    public void setCategory_id(int category_id) {
    
    
        this.category_id = category_id;
    }

    @Override
    public String toString() {
    
    
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", category_id=" + category_id +
                '}';
    }

}

查询

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

import javax.sql.DataSource;
import java.sql.*;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * 1.改变获取连接的方式,用datasoure连接池
 * 2. statement对象换成了preparedStatement对象
 * 3. sql语句使用占位符替换
 * 4. 设置每一个占位符对应的数据
 * 5. 关闭资源
 * User: starry
 * Date: 2021 -03 -20
 * Time: 15:18
 */
public class Select {
    
    

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
    
        //1. 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法区,并执行该类的静态方法块、静态属性。
        Class.forName("com.mysql.jdbc.Driver");

        //2. 获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/ebook?useSSL=false"; //地址
        //url中  jdbc表示协议   127.0.0.1表示IP地址,默认是本地(也可以写成localhost)   3306表示端口号   ebook表示数据库的名称(需要更换)
        //IP用来确定主机的位置   端口号用来唯一确定一个“软件”
        String username = "root";   //用户名,默认是root
        String password = "111111"; //密码,mysql的密码
        //Connection connection = DriverManager.getConnection(url,username,password);

        //数据源
        //改变连接的方式,使用连接池,dataSource是接口
        DataSource dataSource = new MysqlDataSource();  //MysqlDataSource()不具备连接池的概念,之后可以用c3p0连接池,druid连接池等
        ((MysqlDataSource)dataSource).setURL(url);
        ((MysqlDataSource)dataSource).setUser(username);
        ((MysqlDataSource)dataSource).setPassword(password);
        Connection connection = dataSource.getConnection();

        //3. 执行SQL语句
        int id = 3;
        String name = "儒林外史";
        String sql = "select * from book where id = ? and name = ?";    //?表示占位符
        //先要获取statement对象
        //Statement statement = connection.createStatement();   //不用statement,容易发生sql注入,所以用PreparedStatement
        PreparedStatement preparedStatement = connection.prepareStatement(sql); //有预编译的功能,优于statement
        preparedStatement.setInt(1,id);	//(第几个?,对应的值)
        preparedStatement.setString(2,name);
        //executeQuery专门查询的方法  返回值是ResultSet结果集
        //执行sql语句得到的结果就放在resultSet中
        ResultSet resultSet = preparedStatement.executeQuery();
        //打印结果集

        //也可以把获取到的数据集封装成对象
        while(resultSet.next()) {
    
    
            Book book = new Book();
            book.setId(resultSet.getInt(1));
            book.setName(resultSet.getString(2));
            book.setAuthor(resultSet.getString(3));
            book.setPrice(resultSet.getFloat(4));
            book.setCategory_id(resultSet.getInt(5));
            System.out.println(book);
        }

        //资源需要关闭
        resultSet.close();
        preparedStatement.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;

/**
 * Created with IntelliJ IDEA.
 * Description:插入
 * User: starry
 * Date: 2021 -03 -20
 * Time: 15:46
 */
public class Add {
    
    

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
    
        //1. 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法区,并执行该类的静态方法块、静态属性。
        Class.forName("com.mysql.jdbc.Driver");

        //2. 获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/ebook?useSSL=false"; //地址
        //url中  jdbc表示协议   127.0.0.1表示IP地址,默认是本地(也可以写成localhost)   3306表示端口号   ebook表示数据库的名称(需要更换)
        //IP用来确定主机的位置   端口号用来唯一确定一个“软件”
        String username = "root";   //用户名,默认是root
        String password = "111111"; //密码,mysql的密码
        //Connection connection = DriverManager.getConnection(url,username,password);

        //数据源
        //改变连接的方式,使用连接池,dataSource是接口
        DataSource dataSource = new MysqlDataSource();  //MysqlDataSource()不具备连接池的概念,之后可以用c3p0连接池,druid连接池等
        ((MysqlDataSource)dataSource).setURL(url);
        ((MysqlDataSource)dataSource).setUser(username);
        ((MysqlDataSource)dataSource).setPassword(password);
        Connection connection = dataSource.getConnection();

        //3. 执行SQL语句
        String sql = "insert into book(name,author,price,category_id) values(?,?,?,?)";    //?表示占位符

        PreparedStatement preparedStatement = connection.prepareStatement(sql); //有预编译的功能,优于statement
        preparedStatement.setString(1,"数据库应用");	//(第几个?,对应的值)
        preparedStatement.setString(2,"星星");
        preparedStatement.setFloat(3,32.65f);
        preparedStatement.setInt(4,3);

        //除了 查询 其他都要用executeUpdate,返回值是受影响的行数
        int ret = preparedStatement.executeUpdate();
        if(ret != 0) {
    
    
            System.out.println("插入成功");`在这里插入代码片`
        }

        //资源需要关闭
        preparedStatement.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;

/**
 * Created with IntelliJ IDEA.
 * Description:更新
 * User: starry
 * Date: 2021 -03 -20
 * Time: 15:58
 */
public class Update {
    
    

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
    
        //1. 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法区,并执行该类的静态方法块、静态属性。
        Class.forName("com.mysql.jdbc.Driver");

        //2. 获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/ebook?useSSL=false"; //地址
        //url中  jdbc表示协议   127.0.0.1表示IP地址,默认是本地(也可以写成localhost)   3306表示端口号   ebook表示数据库的名称(需要更换)
        //IP用来确定主机的位置   端口号用来唯一确定一个“软件”
        String username = "root";   //用户名,默认是root
        String password = "111111"; //密码,mysql的密码
        //Connection connection = DriverManager.getConnection(url,username,password);

        //数据源
        //改变连接的方式,使用连接池,dataSource是接口
        DataSource dataSource = new MysqlDataSource();  //MysqlDataSource()不具备连接池的概念,之后可以用c3p0连接池,druid连接池等
        ((MysqlDataSource)dataSource).setURL(url);
        ((MysqlDataSource)dataSource).setUser(username);
        ((MysqlDataSource)dataSource).setPassword(password);
        Connection connection = dataSource.getConnection();

        //3. 执行SQL语句
        String sql = "update book set author = ? where id = ?";    //?表示占位符

        PreparedStatement preparedStatement = connection.prepareStatement(sql); //有预编译的功能,优于statement
        preparedStatement.setString(1,"狒狒");    (第几个?,对应的值)
        preparedStatement.setInt(2,15);

        //除了 查询 其他都要用executeUpdate,返回值是受影响的行数
        int ret = preparedStatement.executeUpdate();
        if(ret != 0) {
    
    
            System.out.println("更新成功");
        }

        //资源需要关闭
        preparedStatement.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;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: starry
 * Date: 2021 -03 -20
 * Time: 16:02
 */
public class Delete {
    
    

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
    
        //1. 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法区,并执行该类的静态方法块、静态属性。
        //Class.forName("com.mysql.jdbc.Driver");
        //不需要第一步了,因为Datasource已经把它封装起来了

        //2. 获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/ebook?useSSL=false"; //地址
        //url中  jdbc表示协议   127.0.0.1表示IP地址,默认是本地(也可以写成localhost)   3306表示端口号   ebook表示数据库的名称(需要更换)
        //IP用来确定主机的位置   端口号用来唯一确定一个“软件”
        String username = "root";   //用户名,默认是root
        String password = "111111"; //密码,mysql的密码
        //Connection connection = DriverManager.getConnection(url,username,password);

        //数据源
        //改变连接的方式,使用连接池,dataSource是接口
        DataSource dataSource = new MysqlDataSource();  //MysqlDataSource()不具备连接池的概念,之后可以用c3p0连接池,druid连接池等
        ((MysqlDataSource)dataSource).setURL(url);
        ((MysqlDataSource)dataSource).setUser(username);
        ((MysqlDataSource)dataSource).setPassword(password);
        Connection connection = dataSource.getConnection();

        //3. 执行SQL语句
        String sql = "delete from book where id = ?";    //?表示占位符

        PreparedStatement preparedStatement = connection.prepareStatement(sql); //有预编译的功能,优于statement
        preparedStatement.setInt(1,15); //(第几个?,对应的值)

        //除了 查询 其他都要用executeUpdate,返回值是受影响的行数
        int ret = preparedStatement.executeUpdate();
        if(ret != 0) {
    
    
            System.out.println("删除成功");
        }

        //资源需要关闭
        preparedStatement.close();
        connection.close();

    }

}

猜你喜欢

转载自blog.csdn.net/starry1441/article/details/115075823