zoukankan      html  css  js  c++  java
  • Java-JDBC(2)

    1.预处理对象:

    (1)PreparedStatement处理对象时,建议每条sql语句所有的实际参数,都使用逗号分隔

    String sql = "insert into sort(sid,sname) values(?,?)";;
    PreparedStatement预处理对象代码:
    PreparedStatement psmt = conn.prepareStatement(sql)

    (2)执行sql语句:

    1.int executeUpdate(); --执行insert update delete语句.
    2.ResultSet executeQuery(); --执行select语句.
    3.boolean execute(); --执行select返回true 执行其他的语句返回false.

    (3)设置实际参数:

    l void setXxx(int index, Xxx xx) 将指定参数设置为给定Javaxx值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL Xxx类型值。

     

    setString(2, "家用电器") 把SQL语句中第2个位置的占位符? 替换成实际参数 "家用电器"

     

    2.预处理对象executeUpdate方法:

    通过与处理对象executeUpdate方法,完成insert/update/delete语句的执行,操作格式如下:

    (1)注册驱动(2)获得链接(3)获得与处理对象(4)sql语句占位符设置实际参数

    (5)执行sql语句(6)释放资源

    3.插入记录:insert:

    实现向分类表中插入指定的新分类:

    public void demo01() throws Exception {
            // 1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
            // 3获得预处理对象
            String sql = "insert into sort(sname) values(?)";
            PreparedStatement stat = conn.prepareStatement(sql);
            // 4 SQL语句占位符设置实际参数
            stat.setString(1, "奢侈品");
            // 5执行SQL语句
            int line = stat.executeUpdate();
            System.out.println("新添加记录数:" + line);
            // 6释放资源
            stat.close();
            conn.close();
        }

    3.更新记录update:

    现象更新分类表中指定分类id所对应的分类名称:

    public void demo02() throws Exception {
            // 1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
            // 3获得预处理对象中
            String sql = "update sort set sname=? where sid=?";
            PreparedStatement stat = conn.prepareStatement(sql);
            // 4 SQL语句占位符设置实际参数
            stat.setString(1, "数码产品");
            stat.setInt(2, 1);
    // 5执行SQL语句
            int line = stat.executeUpdate();
            System.out.println("更新记录数:" + line);
            // 6释放资源
            stat.close();
            conn.close();
        }

    4.删除记录delete:

    实现删除分类表中指定扽类id 的记录

    public void demo03() throws Exception {
            // 1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
            // 3获得预处理对象
            String sql = "delete from sort where sid=?";
            PreparedStatement stat = conn.prepareStatement(sql);
            // 4 SQL语句占位符设置实际参数
            stat.setInt(1, 1);
    // 5执行SQL语句
            int line = stat.executeUpdate();
            System.out.println("删除记录数:" + line);
            // 6释放资源
            stat.close();
            conn.close();
        }

    5.预处理对象executeQuery方法:

    通过预处理对象executeQuery方法,完成记录的select语句的执行:

    (1)注册驱动(2)获取链接(3)获取预处理对象(4)sql语句占位符设置实际参数

    (5)执行sql语句(6)处理结果集(遍历结果集合)(7)释放资源

    6.查询记录select

    实现查询分类表

    public void demo04() throws Exception {
            // 1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
            // 3获得预处理对象
            String sql = "select * from sort";
            PreparedStatement stat = conn.prepareStatement(sql);
            // 4 SQL语句占位符设置实际参数
        // 5执行SQL语句
            ResultSet rs = stat.executeQuery();
            // 6处理结果集(遍历结果集合)
            while( rs.next() ){
                //获取当前行的分类ID
                String sid = rs.getString("sid");//方法参数为数据库表中的列名
                //获取当前行的分类名称
                String sname = rs.getString("sname");
                //显示数据
                System.out.println(sid+"-----"+sname);
            }
            // 7释放资源
            rs.close();
            stat.close();
            conn.close();
        }

    实现查询分类表中指定分类名称的记录:

    public void demo05() throws Exception {
            // 1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
            // 3获得预处理对象
            String sql = "select * from sort where sname=?";
            PreparedStatement stat = conn.prepareStatement(sql);
            // 4 SQL语句占位符设置实际参数
            stat.setString(1, "奢侈品");
    // 5执行SQL语句
            ResultSet rs = stat.executeQuery();
            // 6处理结果集(遍历结果集合)
            while( rs.next() ){
                //获取当前行的分类ID
                String sid = rs.getString("sid");//方法参数为数据库表中的列名
                //获取当前行的分类名称
                String sname = rs.getString("sname");
                //显示数据
                System.out.println(sid+"-----"+sname);
            }
            // 7释放资源
            rs.close();
            stat.close();
            conn.close();
        }

    所有记录:

    ===========================================================================

    JDBC工具类:

    “获得数据库连接”操作,将在以后的增删改查所有功能中都存在,可以封装工具类JDBCUtils。提供获取连接对象的方法,从而达到代码的重复利用。

    该工具类提供方法:public static Connection getConn ()

    /*
     * JDBC工具类
     */
    public class JDBC {
        private JDBC(){}
        private static Connection conn;
        static{
            try{
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/day3";
            String username="root";
            String password="123456";
            conn=DriverManager.getConnection(url,username,password);
            }catch(Exception ex){
                throw new RuntimeException(ex+"数据库连接失败");
            }
        }
        public static Connection getConn(){
            return conn;
        }
        public static void close(Connection conn,Statement sta,ResultSet rs){
            if(rs!=null){
                try{
                    rs.close();
                }catch(SQLException ex){}
            }
            if(sta!=null){
                try{
                    sta.close();
                }catch(SQLException ex){}
            }
            if(conn!=null){
                try{
                    conn.close();
                }catch(SQLException ex){}
            }
        }
    }

     

  • 相关阅读:
    (数论选拔)联盟阵容
    ai变成bi(递增)最小次数
    状压dp
    dp被3整除的子序列
    离散化+莫队
    dp+哈希
    set的应用
    NOIP 2016 明明的随机数
    洛谷背景更改
    zzulioj 1734 堆
  • 原文地址:https://www.cnblogs.com/mr171733/p/9968391.html
Copyright © 2011-2022 走看看