• 预处理


    PreparedStatement stmt = conn.prepareStatement(sql);
    Statement stmt = conn.createStatement();//能过连接对象创建一个语句对象
     
        PreparedStatement是Statement的子接口
    这两类的对象都是能过Connection对象创建,但创建的方法不同:
        Statement stmt = conn.createStatement();
     
        PreparedStatement stmt= conn.prepareStatement(String sql语句);
     
    1.Statement语句中的sql语句是在执行时传参数;PreparedStatement语句中的sql语句是创建时传参数.
    2.PreparedStatement语句中的sql语句允许使用?参数,Statement语句中的sql语句中参数是字符中拼接。
     
    //在学生表(Student)中查"张三"的信息,"张三"是保存在变量name中
    sql拼接:
    String sql = "select * from student where name = '"+name+"'";
    sql语句使用参数:
    String sql = "select * from student where name = ?";
    “?”是预留一个参数位,在执行之前完成替换就可以了。
     
    再比如在"product"中表输入一个商品,商品的数据封装“p1”的商品对象中
    前提条件:
    Product p1 = new Product();
    p1.setName("牙膏");
    p1.setPrice(12);
    p2.setAmount(1);
     
    sql拼接:
        String sql = "insert product(pname, price, amount) values('"+p1.getName()+"',"+p1.getPrice()+","+p1.getAmount()+")";
    sql语句使用参数:
        String sql = "insert product(pname, price, amount) values(?,?,?)";
     
    替换参数的方法:
        pstmt.setXxx(编号,值);
        Xxx:数据库中对应数据类型
        编号:从1开始的“?”顺序
        值:要替换内容
    stmt.setString(1,p1.getName());
    stmt.setDouble(2,p1.getPrice());
    stmt.setInt(3,p1.getAmount());
     
     
     
     
    1 插入数据
    public boolean ChaRu3(User user){
    boolean flag=true;
    Connection conn=null;
    PreparedStatement ps=null; //创建PreparedStatement 对象
    String sql= "insert into user (name,pwd) values(?,?)"; //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。
    conn=DBConnUtil.getConn();
    try {
    ps=conn.prepareStatement(sql);
    ps.setString(1, user.getName()); //对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值。
    ps.setString(2, user.getPwd());
    int i=ps.executeUpdate();
    if(i==0){
    flag=false;
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    DBConnUtil.closeAll(null, ps, conn);
    }
    return flag;
     
    }
     
     
    2 修改数据
     
    public boolean XiuGai3(User user){
    boolean flag=true;
    Connection conn=null;
    PreparedStatement ps=null;
    String sql="update user set pwd=? where name=?";
    conn=DBConnUtil.getConn();
    try {
    ps=conn.prepareStatement(sql);
    ps.setString(1, user.getPwd());
    ps.setString(2, user.getName());
    int i= ps.executeUpdate();
    if(i==0){
    flag=false;
    }
     
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    DBConnUtil.closeAll(null, ps, conn);
    }
    return flag;
    }
     
     
    3 删除数据
    public boolean ShanChu3(int id){
    boolean flag=true;
    Connection conn=null;
    PreparedStatement ps=null;
    String sql="delete from user where id=?";
    conn=DBConnUtil.getConn();
    try {
    ps=conn.prepareStatement(sql);
    ps.setInt(1, id);
    int i=ps.executeUpdate();
    if(i==0){
    flag=false;
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    DBConnUtil.closeAll(null, ps, conn);
    }
     
    return flag;
    }
     
    4 查看数据
    public List<User> ChaKan3(){
    List<User> list= new ArrayList<User>();
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    String sql="select * from user";
    conn=DBConnUtil.getConn();
    try {
    ps=conn.prepareStatement(sql);
    rs=ps.executeQuery();
    while(rs.next()){
    User user= new User();
    user.setName(rs.getString("name"));
    list.add(user);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    DBConnUtil.closeAll(rs, ps, conn);
    }
     
    return list;
    }
     
  • 相关阅读:
    什么是进程
    进程控制
    MMAP文件内存映射
    I/O多路转接模型
    LINUX创建管道文件
    文件描述符复制
    LINUX改变文件大小
    类作用域
    LINUX文件定位
    War of the Corporations CodeForces
  • 原文地址:https://www.cnblogs.com/zachary7/p/8191651.html
Copyright © 2020-2023  润新知