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();
网友评论