JDBC(No.12)

l 事务ACID

1、 START TRANSACTION //开始事务

2、 UPDATE //更新

3、 DELETE //删除

4、 SAVEPOINT S1; //设置一个保存点

5、 DELETE //删除

6、 ROLLBACK WORK TO SAVEPOINT S1; 回滚事务到保存点s1 ,所以第五条没用,被忽略(当事务回滚到某个保存点后,在该保存点之后设置的保存点将被删除)

7、 INSERT //更新

8、 COMMIT WORK; //结束事务

例如:(实例应用)

try {

conn=DriverManager.getConnection("jdbc:mysql://localhost/kcgl", "root","admin");

st = conn.createStatement();

conn.setAutoCommit(false);//关闭自动提交,打开事务

//1

String sql="update cj set score=score+1000 where scode=1";

st.executeUpdate(sql);

Savepoint sp = conn.setSavepoint(); //设置保存点

//2

sql = "update cj set score=score+1000 where scode=1";

st.executeUpdate(sql);

//3

sql = "update cj set score=score+1000 where scode=1";

st.executeUpdate(sql);

conn.rollback(sp);//回滚到保存点,2和3相当于没有执行

//4

sql = "update cj set score=score+1000 where scode=1";

st.executeUpdate(sql);

conn.commit();//提交事务}

l 分页的功能

MySQL提供了分页语法. 在查询语句后可使用LIMIT关键字完成分页功能, 例如:

select * from user limit 40,20

查询从user表中取出从第41条开始的20条记录. 第一个参数表示忽略前面多少个, 第二个参数代表取多少个.

l 获取插入的ID

MySQL的select last_insert_id()可以获取之前插入的记录的id, 但这只是MySQL才有的函数

只有对自增长的列发生自增长的赋值后才会导致一个key的产生,并且用getGereratedKeys()返回。例如:

conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

ResultSet rs = ps.getGeneratedKeys();

if (rs.next())

user.setId(rs.getInt(1));

l 可更新结果集、敏感结果集

conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

ResultSet.TYPE_SCROLL_SENSITIVE

表示获得ResultSet之后是敏感的, 随数据库更新的. 但MySQL没有支持这项功能

ResultSet.CONCUR_UPDATABLE

表示获得ResultSet之后是可更新的, 例如:

rs.next();

rs.updateString("name", "updateName");

rs.updateRow();

可以将当前行的name属性改为updateName.

l 反射

反射可以理解为在运行时获取对象类型信息的操作,可以访问、检测和修改其自身状态或行为的一种能力,它允许动态发现和绑定类、方法、字段,以及所有其他的由语言所产成的元素,不仅仅是简单地列举类、字段以及方法,通过反射还能够在运行时完成创建实例、调用方法以及访问字段的工作。

² class类

Ø 调用Object类的getClass()方法来得到Class对象

例如:

MyObject x = new MyObject();

Class c1 = x.getClass();

Ø 使用Class类的forName()静态方法获得与字符串对应的Class对象。

例如:

Class c2 = Class.forName(“java.lang.String”);

Ø 使用“类型名.class”获取该类型对应的Class对象。

例如:

Class c1 = Manager.class;

Class c2 = int.class;

Class c3 = double[].class;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值