加载驱动、获取数据库连接;PreparedStatement预编译sql语句

发布时间 2023-04-10 16:20:29作者: fighterk
package p1;

import com.mysql.cj.xdevapi.PreparableStatement;
import org.junit.Test;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

public class jdbc1 {
    @Test
    public void test1() throws Exception{
        //加载数据库驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //提供路径、用户、密码
        String url="jdbc:mysql://localhost:3306/test";
        String user="root";
        String password="root";
        //获取连接
        Connection con=DriverManager.getConnection(url,user,password);

        System.out.println(con);

        //Statement存在被SQL注入的安全问题,所以使用PreparedStatement

        //预编译sql语句
        String sql1="insert into customers(name,email,birth) values(?,?,?)";
        PreparedStatement ps=con.prepareStatement(sql1);
        //填充占位符,数据库下标从1开始
        ps.setString(1,"哪吒");
        ps.setString(2,"nezha@gmail.com");
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
        Date date=sdf.parse("2001-01-01");
        ps.setDate(3,new java.sql.Date(date.getTime()));
        //执行sql语句,之后关闭资源
        ps.execute();
        ps.close();
        con.close();
    }

    @Test
    public void test2() throws Exception{
        Class.forName("com.mysql.cj.jdbc.Driver");

        String url="jdbc:mysql://localhost:3306/test";
        String user="root";
        String password="root";

        Connection con=DriverManager.getConnection(url,user,password);

        System.out.println(con);


        String sql1="update customers set name=? where id=?";
        PreparedStatement ps=con.prepareStatement(sql1);
        ps.setString(1,"莫扎特");
        ps.setObject(2,18);
       
        ps.execute();
        ps.close();
        con.close();
    }

    @Test
    public void test3() throws Exception{
        Class.forName("com.mysql.cj.jdbc.Driver");

        String url="jdbc:mysql://localhost:3306/test";
        String user="root";
        String password="root";

        Connection con = DriverManager.getConnection(url, user, password);
        System.out.println(con);

        String sql1="select id,name,email,birth from customers where id=?";
        PreparedStatement ps = con.prepareStatement(sql1);
        ps.setObject(1,1);

        ResultSet resultSet = ps.executeQuery();        //executeQuery会返回一个结果集
        if(resultSet.next()){      //若还有数据,返回true并指针下移,反之false且不动
            int id=resultSet.getInt(1);
            String name=resultSet.getString(2);
            String email=resultSet.getString(3);
            Date birth=resultSet.getDate(4);

            //ORM思想,1张数据库表可以用1个类对应,1条记录对应1个对象,1个字段对应1个属性
            System.out.println(id);
            System.out.println(name);
            System.out.println(email);
            System.out.println(birth);
        }

        resultSet.close();
        ps.close();
        con.close();

    }
}