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){}
        }
    }
}

 

原文地址:https://www.cnblogs.com/mr171733/p/9968391.html