美文网首页
JDBC使用与理解

JDBC使用与理解

作者: 吃块西瓜写代码 | 来源:发表于2019-10-05 22:09 被阅读0次
    Statement stmt = conn.createStatement;
    String name = "赵六";
    String sql = "insert into t_user(username,pwd) values ('jklasd',312)";
    stmt.execute(sql);
    
    //sql注入.在这个情形下就能删库了
    String id = 5 +"or 1=1";
    String sql = "delete from t_user where id="+id;
    
    
    //测试PreparedStatement
    sql = "insert into t_user (username,pwd) values(?,?)"//占位符,避免拼接字符串出问题
    
    PrepardStatement ps = conn.prepareStatement(sql);
    
    ps.setString(1,"lpc");//参数索引从1开始算
    ps.setString(2,"123412");
    
    //ps.setObject();
    //ps.setDate(4,java.sql.Date(System.currentTimeMills()));//插入的是sql时间。 
    ps.excute();
    
    
    //excute(),excuteQuery()查询,excuteUpdate()更新删除;
    
    
    //测试ResultSet
    
    sql = "select * from t_user where id>?";
    ps.setInt(1,2);
    
    ResultSet rs = ps.excuteQuery();
    
    //rs初始没有指定值
    while(rs.next()){
        System.out.println(rs.getInt(1)+"----"+rs.getString(2));//取出第一列
    }
    
    
    
    //批处理优先使用Statement,预编译要空间 
    conn.setAutoCommit(false);//设为手动提交
     
    for(int i=0;i<200;i++){
        stmt.addBatch('insert into t_user (username,pwd,regTime) values ('gao')')
    }
    
    stmt.executeBatch();
    conn.commit();
    
    
    
    
    if(conn!=null){
        rs.close();
        ps.close();
        stmt.close();
        conn.close();//后开的先关,要将三个分开关闭
    }
    

    2 事务操作

    事务

    事务开始于
    连接到数据库并执行一条DML语句

    事务结束于
    -执行COMMIT或ROLLBACK
    -执行一条DDL语句
    -执行一条DML语句,但该语句失败了
    -执行一条DCL语句
    -断开与数据库的连接

    事务特性
    1、原子性
    要么全部成功,要么全部失败
    2、一致性
    一个操作失败时,所有的更改国的数据回到修改前
    3、隔离性
    事务查看数据时数据所取得状态,要么时另一个并发事务修改它之前得状态,要是是另一事务修改它之后得状态。事务不会查看中间状态
    读取未提交
    读取已提交
    可重复读
    序列化
    4、持久性
    事务完成后,对系统得影响是永久得

    //JDBC默认是true
    ps1.excute();
    ps2.excute();
    
    
    
    时间类型1970年为0
    java.sql.Date 年月日
    java.sql.time 时分秒
    java.sql.timestamp 年月日时分秒
    创建对象时输入一个long类型的数
    
    
    Timestamp stamp = new Timestamp(System.currentTimeMills());
    
    
    
    时间操作
    取出指定时间段的数据
    
    String sql="select * from t_user where regTime>? and regTime<?";
    
    ps = conn.prepareStatement(sql);
    
    public long time(String dateStr){
        DateFormat format = new SimpleDateFormat('yyyy-MM-dd hh:mm:ss');
    
        
        return format.parse(dataStr).getTime();
    
    }
    
    java.sql.Date start = new java.sql.Date(str2Date("2015-4-10 10:23:45"));
    java.sql.Date end = new java.sql.Date(str2Date("2015-4-10 10:23:45"));
    
    ps.setObject(1,start);
    ps.setObject(2,end);
    
    
    pros = new Properties();
    
    pros.load(Thread.currentThread().getContextClassLoader().getResourceAsStream('db.properties'));
    

    大文件读取:用流的方式

    //读大文件,用流的方式读入
    ps.setClob(2,new FileReader(new File("d:/a.txt"));)
    
    ps.setClob(2,new BufferReader(new InputReader(new ByteArrayInputStream("aaaa".getBytes())));
    //
    Clob c = rs.getClob("myInfo")
    Reader r = c.getCharacterStream();
    
    

    相关文章

      网友评论

          本文标题:JDBC使用与理解

          本文链接:https://www.haomeiwen.com/subject/mxlwyctx.html