JDBC的应用

1、在项目中添加jar文件

2、加载驱动类

3、建立与数据库的连接,获得连接对象

4、发送SQL

5、关闭数据库连接

//2.加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
 
        //3.建立与数据库的连接,获得连接对象
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai"; //其中schooldb为自己的数据库的名称
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
 
        //4.发送sql
        Statement st =connection.createStatement();
        st.executeUpdate("insert into major(college)values('外国语学院')");
 
        //5.关闭数据库连接
        st.close();
        connection.close();

 从idea向数据库中添加,删除,修改数据

package Day1;
 
import java.sql.*;
 
public class Demo2 {
    public static void main(String[] args) {
        Demo2 demo2=new Demo2();
        try {
            //demo2.save("崔渭阳","男","123425", "渭南",4);
            //demo2.update(3);
            //demo2.delete(10);
            demo2.saves("朱京宝","男","123426", "安康",2);
            //demo2.updates(5,"123419", "延安");
            //demo2.deletes(12);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
 
    //添加1.0
    public void save(String name,String gender,String phone,String address,int majorid) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        Statement st=connection.createStatement();
        st.executeUpdate("INSERT INTO student(NAME,gender,phone,address,TIME,majorid)"+" VALUES('"+name+"','"+gender+"','"+phone+"','"+address+"',now(),"+majorid+")");
        //关闭数据库连接
        st.close();
        connection.close();
    }
 
    //修改
    public void update(int num) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        Statement st=connection.createStatement();
        st.executeUpdate("update student set height=1.89,address='汉中'"+" where num = +"+num+"");
        //关闭数据库连接
        st.close();
        connection.close();
    }
 
    //删除
    public void delete(int num) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        Statement st=connection.createStatement();
        st.executeUpdate("delete from student"+" where num = +"+num+"");
        //关闭数据库连接
        st.close();
        connection.close();
    }
 
    //添加2.0
    public void saves(String name,String gender,String phone,String address,int majorid) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        PreparedStatement ps=connection.prepareStatement("INSERT INTO student(NAME,gender,phone,address,TIME ,majorid)"+" VALUES(?,?,?,?,now(),?)");
        ps.setObject(1, name);
        ps.setObject(2, gender);
        ps.setObject(3, phone);
        ps.setObject(4, address);
        ps.setObject(5,majorid);
 
        //真正执行
        ps.executeUpdate();
        //关闭数据库连接
        ps.close();
        connection.close();
    }
 
    //修改2.0
    public void updates(int num,String phone,String address) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        PreparedStatement ps=connection.prepareStatement("update student set phone=?,address=? where num=?");
        ps.setObject(1, phone);
        ps.setObject(2, address);
        ps.setObject(3, num);
        //真正执行
        ps.executeUpdate();
        //关闭数据库连接
        ps.close();
        connection.close();
    }
 
    //删除2.0
    public void deletes(int num) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        PreparedStatement ps=connection.prepareStatement("delete from student where num=?");
        ps.setObject(1, num);
        //真正执行
        ps.executeUpdate();
        //关闭数据库连接
        ps.close();
        connection.close();
    }
}

PreparedStatement和Statement的区别:

相同点:都是向数据库发送sql

不同点:

Statement:将参数直接拼接到sql中,要拼接字符串,写起来麻烦,安全性差

PreparedStatement:先用?占位,再通过setObject()赋值,写法简单,安全性强

package Day1;
 
import java.sql.*;
import java.util.ArrayList;
 
public class Demo4 {
    public static void main(String[] args) {
        Demo4 demo4=new Demo4();
        try {
            //Student student=demo4.queryNum(1);
            //System.out.println(student);
          ArrayList<Student> students=demo4.queryGender("男");
            System.out.println(students);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
 
    //用学号查询
    public Student queryNum(int num) throws ClassNotFoundException, SQLException {
        //加载驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        PreparedStatement ps=connection.prepareStatement("select num,name,gender,phone,address,time from student where num = ?");
        ps.setObject(1, num);
        //查询
        ResultSet rs=ps.executeQuery();//将查询的结果封装到一个ResultSet对象中,需要将ResultSet对象中的数据封装到对应的对象中
        Student student=null;
        //next() 如果结果有数据,返回true,否则false
        while(rs.next()){
            student=new Student();
            student.setNum(rs.getInt("num"));
            student.setName(rs.getNString("name"));
            student.setGender(rs.getNString("gender"));
            student.setPhone(rs.getNString("phone"));
            student.setAddress(rs.getNString("address"));
            student.setTime(rs.getTimestamp("time"));
        }
        //关闭与数据库的连接
        rs.close();
        ps.close();
        connection.close();
 
        return student;
    }
 
    
    //用性别来查询
    //集合方法
    public ArrayList<Student> queryGender(String gender) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        //建立与数据库的连接
        String url="jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);
        //发送sql
        PreparedStatement ps=connection.prepareStatement("select num,name,gender,phone,address,time from student where gender = ?");
        ps.setObject(1, gender);
        //查询
        ResultSet rs=ps.executeQuery();
        ArrayList<Student> students=new ArrayList<>();
        while (rs.next()){
            //每查一组数据,创建一个对象,将对象存到集合中
            Student student=new Student();
            students.add(student);
            student.setNum(rs.getInt("num"));
            student.setName(rs.getNString("name"));
            student.setGender(rs.getNString("gender"));
            student.setPhone(rs.getNString("phone"));
            student.setAddress(rs.getNString("address"));
            student.setTime(rs.getTimestamp("time"));
        }
        //关闭与数据库的连接
        rs.close();
        ps.close();
        connection.close();
 
        return students;
    }
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值