java学习笔记——JDBC

来源:互联网 发布:比价的软件 编辑:程序博客网 时间:2024/06/10 20:29

1. 什么是JDBC?

使用java程序发送sql语句到数据库服务器端执行,这叫用到了JDBC技术!!!!
jdbc是Oracle-Sun公司设计的一套专门用于java程序操作数据库的接口。

2. 使用jdbc发送sql条件

连接mysql数据库:

  • 数据库主机
  • 端口
  • 数据库用户名
  • 数据库密码
  • 连接的数据库

3. JDBC的核心API

|-Driver接口: 数据库驱动程序的接口,所有具体数据库厂商需要的驱动程序需要实现此接口。

|-Connection接口:与具体的数据库的连接对象。

|-Statement接口:用于执行静态 SQL 语句

|- PreparedStatement接口:用于执行预编译的 SQL 语句(是Statement的子接口)

|- CallableStatement接口:用于执行 SQL 存储过程的接口(是PreparedStatement的子 接口)

|- ResultSet接口:结果集对象。 存储所有数据库查询的结果,用该对象进行数据遍历。

4. 使用statement接口

连接数据库需要3大条件:用户名,密码,url
这里MySQL使用的url格式是:jdbc:mysql://machine_name:port/dbname

package com.jdbc.b_statement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;//这里使用statement接口进行创建表的操作public class Demo {    private static String password = "root";    private static String user = "root";    private static String url = "jdbc:mysql://localhost:3306/day20";    public static void main(String[] args) {        Statement stmt = null;        Connection con = null;        try {            Class.forName("com.mysql.jdbc.Driver");            con = DriverManager.getConnection(url, user, password);            stmt = con.createStatement();            String sql = "create table student("+                "id int,"+                "name varchar(20)"+                ");";            int count = stmt.executeUpdate(sql);            System.out.println(count);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();            throw new RuntimeException();        }finally {            if (con!=null) {                try {                    con.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            if (stmt!=null) {                try {                    stmt.close();                } catch (SQLException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}

创造一个工具类来简化操作

package com.jdbc.Util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JDBCUtil {    private static String password = "root";    private static String user = "root";    private static String url = "jdbc:mysql://localhost:3306/day20";    static{        try {            Class.forName("com.mysql.jdbc.Driver");        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public static Connection getConn(){        try {            return DriverManager.getConnection(url, user, password);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();            throw new RuntimeException();        }    }    public static void getClose(Statement stmt,Connection conn,ResultSet rs){        if (stmt!=null) {            try {                stmt.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if (conn!=null) {            try {                conn.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        if (rs!=null) {            try {                rs.close();            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

进行DML操作

package com.jdbc.b_statement;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import com.jdbc.Util.JDBCUtil;public class Demo2 {    public static void main(String[] args) {        testInsert();//      testUpdate();//      testDelete();    }    private static void testDelete() {        Connection conn = JDBCUtil.getConn();        try {            Statement stmt = conn.createStatement();            String sql = "DELETE FROM student WHERE id=1";            int count = stmt.executeUpdate(sql);            System.out.println(count);            JDBCUtil.getClose(stmt, conn, null);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private static void testUpdate() {        Connection conn = JDBCUtil.getConn();        try {            Statement stmt = conn.createStatement();            String sql = "UPDATE student SET name='张学友' WHERE id=1;";            int count = stmt.executeUpdate(sql );            System.out.println(count);            JDBCUtil.getClose(stmt, conn, null);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private static void testInsert() {        Connection conn = JDBCUtil.getConn();        try {            Statement stmt = conn.createStatement();            String sql = "INSERT INTO student(id,name) VALUES(1,'刘德华');";            int count = stmt.executeUpdate(sql);            System.out.println(count);            JDBCUtil.getClose(stmt, conn, null);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

进行DQL操作

package com.jdbc.b_statement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.jdbc.Util.JDBCUtil;public class Demo3 {    public static void main(String[] args) {        Connection conn = JDBCUtil.getConn();        try {            Statement stmt = conn.createStatement();            String sql = "SELECT * FROM student";            ResultSet rs = stmt.executeQuery(sql);            while (rs.next()) {                System.out.println(rs.getInt("id") + "--"+ rs.getString("name"));            }            JDBCUtil.getClose(stmt, conn, rs);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

5. 用PreparedStatement对象执行SQL操作

package com.jdbc.c_preparedstatement;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import com.jdbc.Util.JDBCUtil;public class Demo {    public static void main(String[] args) {        testInsert();    }    private static void testInsert() {        //定义连接对象和预编译sql对象        Connection conn  = null;        PreparedStatement stmt = null;        try{            //获取连接            conn = JDBCUtil.getConn();            //PreparedStatement prepareStatement(String sql)            //throws SQLException创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。            String sql = "INSERT INTO student VALUES(?,?,?);";//参数化的sql,动态sql            stmt = conn.prepareStatement(sql);//需要一个预编译的sequel语句,将sq发送到数据库端,检查sql语法及用户权限等信息            //给之前参数化的sql语句设置参数            //两个参数:1:是给第几个?设置数据    2:给?设置的数据            stmt.setInt(1, 5);            stmt.setString(2, "黎明");            stmt.setInt(3, 60);            //int executeUpdate()throws SQLException            int count = stmt.executeUpdate();            System.out.println(count);        }catch(Exception e){            e.printStackTrace();        }finally{            //释放资源            JDBCUtil.close(conn, stmt, null);        }    }}

6. CallableStatement对象执行存储过程

需要先在数据库里添加好存储过程,这里只负责执行语句

package com.jdbc.d_callablestatement;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import com.jdbc.Util.JDBCUtil;public class Demo {    public static void main(String[] args) {//      testIn();        testOut();    }    private static void testOut() {        Connection conn = JDBCUtil.getConn();        CallableStatement stmt = null;        ResultSet rs = null;        String sql = "CALL pro_QueryNameById(?,?);";        try {            stmt = conn.prepareCall(sql);            stmt.setInt(1, 2);            stmt.registerOutParameter(2, java.sql.Types.VARCHAR);            rs = stmt.executeQuery();            System.out.println(stmt.getString(2));        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private static void testIn() {        ResultSet rs = null;        CallableStatement stmt = null;        Connection conn = JDBCUtil.getConn();        String sql = "CALL pro_QueryById(?);";        try {            stmt = conn.prepareCall(sql);            stmt.setInt(1, 2);            rs = stmt.executeQuery();            while (rs.next()) {                System.out.println(rs.getString("name")+"--"+rs.getInt("id"));            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCUtil.getClose(stmt, conn, rs);        }    }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苏宁自提逾期怎么办 天猫超市有问题怎么办 买的东西质量有问题怎么办 淘宝优惠额度大做不了怎么办 淘宝天猫拒绝退货退款怎么办 u盘变成活动分区怎么办 学生上课纪律差家长老师怎么办 老师管纪律学生打老师怎么办? 淘宝店铺层级排名下降怎么办 网购不支持该地区销售怎么办 分销公司佣金不给业务员怎么办 淘宝买家账号违规了怎么办 王者荣耀打野被队友抢野怎么办 艾肯材料换错了怎么办 淘宝直播粉丝5万怎么办 淘宝直播刚开始好难怎么办 分期乐账号忘记了怎么办 外链多了影响网站排名怎么办 自粘墙纸有气泡怎么办 贴壁纸阴角不力怎么办 自贴墙纸有气泡怎么办 壁纸贴的有起泡怎么办 pos机连接主机失败怎么办 无线pos机连接主机失败怎么办 水墨晕染模板用不了怎么办 申请入驻饿了么失败怎么办 天猫流量大淘宝怎么办 拼多多商家不退款怎么办 苹果手机开流量显示e怎么办 苹果手机有服务流量打不开怎么办 苹果七plus流量打不开怎么办 苹果手机突然打不开流量怎么办 天猫商家迟迟不发货怎么办 苹果7开不开机了怎么办 苹果机黑屏了开不起来怎么办 美团收银机连不上网怎么办 6s换电池后黑屏怎么办 苹果上的软件打不开也删不掉怎么办 苹果手机打开软件打不开怎么办 苹果电脑下载的软件打不开怎么办 苹果手机下载的软件都打不开怎么办