zoukankan      html  css  js  c++  java
  • 七,JOBC数据库编程

    七,JOBC数据库编程

    七,JOBC数据库编程
    一,java数据库编程步骤
    1,将数据库驱动包考入lib目录;
    2,加载驱动--整个操作数据库程序运行期间只需要加载一次
    Class.forName("com.mysql.driver");加载driver驱动
    整个操作数据库程序,只需要加载一次
    3,开启连接
    1,开启链接调用Connection接口;(登录数据库)
    Connection con=null;
    con=DriverManager.getConnection("地址;端口/库;编码格式, 账号, 密码);
    需要使用try捕获错误
    编码格式;
    开启编码;useUnicode=true
    用&拼接参数;&characterEncoding=utf-8
    例;
    Connection con=null;
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test
    ?useUnicode=true&characterEncoding=utf-8", "root", "root");
    4,操作管道(面试重点)
    1,增删改;
    1,声明sql语句
    String sql="update t_atmuser set f_atmUserPassWord=?,f_atmUserMoney=
    ? where pk_atmid=? ;";
    2,?占位符,代表,用PreparedStatement为?字符串拼接方式有风险(sql注入),
    所以使用位置赋值(下标是从一开始第一个就代表第一个问号)
    PreparedStatement ps=con.prepareStatement(sql);
    ps.setString(1, user.getPassword());
    ps.setFloat(2, user.getAccount());
    ps.setInt(3, user.getAtmid());
    3,写入数据库,返回一个int类型的值,响应的行数
    ps.executeUpdate();
    4,字符串拼接使用(有风险sql注入)
    Statement stat = con.createStatement();
    int n = stat.executeUpdate(sql);
    2,查
    1,申明了语句(有ID用ID查,速度更快)
    String sql="select
    pk_atmid,f_atmUserName,f_atmUserPassWord,f_atmUserMoney
    from t_atmuser where f_atmUserName=? and f_atmUserPassWord=?";
    2,?占位符,代表,用PreparedStatement为位置赋值
    (下标是从一开始第一个就代表第一个问号)
    PreparedStatement ps=con.prepareStatement(sql);
    ps.setString(1, userName);
    ps.setString(2, userPassWord);
    3,返回一个ResultSet类型数据
    ResultSet rs=ps.executeQuery();
    4,用while来读取所有每行数据,rs.next()有几行数据就返回几个true
    while(rs.next()){ //rs.next();判断有没有下一行
    rs.get数据类型(那个字段)
    user.setAccount(rs.getFloat("f_atmUserMoney"));
    user.setAtmid(rs.getInt("pk_atmid"));
    user.setCardNum(rs.getString("f_atmUserName"));
    user.setPassword(rs.getString("f_atmUserPassWord"));
    }
    5,关闭管道
    if(con!=unll){
    con.close();
    }
    二,事务
    1,一个动作,同时涉及到多张表的增删改查操作,且这些操作化为一体;
    2,必须保证是同一个Connection
    3,设置自动提交为假(开启事务);
    con.setAutoCommit(false);//写在Connection下
    4,最后用con.commit();手动提交;之前都没有发生异常才可以;
    5,发生异常就执行con.rollback();回滚;需要try(捕获异常)
    6,事务的4大特性
    1,原子性
    多个动作是一个整体,不可被切割,必须同时成功或同时失败;
    2,一致性
    多个动作执行结果必须按照顺序串执行
    3,隔离性
    事务执行不受其他动作的干扰;事务执行的中间结果与其他动作是透明的;
    4,持久性
    对于自己已提交的事务必须保证对数据库的物理表执行操作;
    三,映射;
    类与类之间的关联;表与表之间的关联
    四,注意
    1,date dt=new date();//java的date
    date de=new java.sql.date(tb.gettime());sql的date
  • 相关阅读:
    关于jpa的Specification自定义函数,实现oracle的decode;以及如何在静态方法中调用注入的service
    转载-logbock.xml
    sql学习指南--持续更新
    转载-有时间担心中年危机,还不如用忧虑的时间来提升自己——再论程序员该如何避免所谓的中年危机
    转载-缓存
    转载-SpringBoot开发案例之整合日志管理
    转载-Spring Boot应用监控实战
    乐观锁 与 悲观锁
    独占锁 和 共享锁
    自旋锁
  • 原文地址:https://www.cnblogs.com/zpcbk/p/6527293.html
Copyright © 2011-2022 走看看