使用JDBC操作数据库

JDBC(Java DataBase Connectivity)

一.概念

  • Java数据库连接技术,能实现Java程序对各种数据库的访问,简单点说就是使用统一的一套java代码来操作所有的关系型数据库
  • 由一组使用Java语言编写的类和接口(JDBC API)组成,它们位于java.sql以及javax.sql中

二.前提:导入jar包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.JDBC访问数据库步骤

1.Class.forName()加载驱动

Class.forName("com.mysql.jdbc.Driver");

注:此处需要抛一个异常

2.DriverManager获取Connection连接(需要数据库地址URL,用户名,密码)

String url="jdbc:mysql://192.168.83.2:3306/test";
Connection conn = DriverManager.getConnection(url, "root", "ok");

注:

  • 192.168.83.2是我的虚拟机地址,每个人都不一样
  • 3306是端口号,每人是一样的
  • test是数据库中的一个库名
  • root是我的用户名,ok是我的密码

3.创建Statement执行SQL语句

Statement stat = conn.createStatement();

4.返回ResultSet查询结果

//查询的grade表
String sql="select * from grade";
ResultSet rs = stat.executeQuery(sql);
//索引法,索引为1的时候是gradeId所在列
while (rs.next()) {
    int gradeId = rs.getInt(1);
    String gradeName= rs.getString(2);
    System.out.println(gradeId+"\t|\t"+gradeName);
        }

数据库中grade表信息
在这里插入图片描述

注:
查询语句就是executeQuery
增删改语句是executeUpdate
用ResultSet集合来接收查询的结果,
结果遍历打印出来,用next方法

5.释放资源

rs.close();
stat.close();
conn.close();

注:依次关闭资源

6.查询结果

在这里插入图片描述

四.访问数据库步骤statement(使用封装)

public class Demo1 {
    private static Connection conn;
    private static Statement stat;
    private static ResultSet rs;
    public static void getConn(){
        //1.加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        //2.获取连接,数据库地址URL,用户名,密码
        String url="jdbc:mysql://192.168.83.2:3306/test";
        try {
            Connection conn = DriverManager.getConnection(url,"root","ok");
            if (conn!=null)
                //3.创建statement执行sql语句
                stat=conn.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void query(String sql,String param){
        //查询的方法
        try {
            if (stat!=null)
                //接收返回结果
                rs = stat.executeQuery(sql + param);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        public static boolean update(String sql){
        //增删改的方法
            int num=-1;
                try {
                    if(stat!=null) {
                        num= stat.executeUpdate(sql);
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return num>0?true:false;
        }
        public static void close(){
        //关闭资源的方法
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stat!=null) {
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        }
    public static void main(String[] args) throws Exception{
        getConn();
        String sql="select * from grade where gradeId=";
        query(sql,"2");
        if (rs.next()){
            System.out.println(rs.getString(2));
        }
    }
}

查询结果
在这里插入图片描述

五.访问数据库步骤PreparedStatement(使用封装)

public class Demo1 {
    private static Connection conn;
    private static PreparedStatement pst;
    private static ResultSet rs;
    private static final String URL="jdbc:mysql://192.168.83.2:3306/test";
    public static void getConn(){
        //1.加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            conn = DriverManager.getConnection(URL,"root","ok");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void query(String sql,String...params){//可变参数
        //查询的方法
        try {
            pst = conn.prepareStatement(sql);
            for (int i = 0; i <params.length ; i++) {
                pst.setObject(i+1,params[i]);
            }
                //接收返回结果
                rs =pst.executeQuery();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        public static boolean update(String sql,String...params){
        //增删改的方法
            int num=0;
            try {
                pst=conn.prepareStatement(sql);
                for (int i = 0; i <params.length ; i++) {
                    pst.setObject(i+1,params[i]);
                }
                num= pst.executeUpdate();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return num>0;
        }
        public static void close(){
        //关闭资源的方法
            try {
                if (rs!=null)
                rs.close();
                if (pst!=null)
                pst.close();
                if (conn!=null)
                conn.close();
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    public static void main(String[] args) throws Exception{
        getConn();
        String sql="select * from grade where gradeId=?";
        //用问号代表参数,可变参数也可以不传
        query(sql,"3");
        while (rs.next()){
            int i=1;
            while (rs.getMetaData().getColumnCount()>=i){
                System.out.println(rs.getObject(i)+"\t|");
                i++;
            }
            System.out.println();
        }
    }
}

运行结果
在这里插入图片描述

六.Statement与PreparedStatement区别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值