📄 accountdao.java
字号:
package com.allanlxf.jdbc.adv;
import java.sql.*;
import com.allanlxf.jdbc.util.ConnectionFactory;
import com.allanlxf.jdbc.util.JdbcUtil;
public class AccountDao
{
public void transfer(int fromId, int toId, double amount)
{
Connection con = null;
Statement st = null;
try
{
con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
st = con.createStatement();
String sql = "update sd0703_account set balance = balance + " + amount + " where id = " + toId;
st.executeUpdate(sql);
sql = "update sd0703_account set balance = balance - " + amount + " where id = " + fromId + " and balance > " + amount;
int rows = st.executeUpdate(sql);
if(rows == 0)
{
throw new Exception();
}
con.commit();
System.out.println("success!");
}catch(Exception e)
{
System.out.println("failed!");
try
{
con.rollback();
}catch(Exception r)
{
}
throw new RuntimeException(e.getMessage());
}finally
{
JdbcUtil.close(st, con);
}
}
public static void main(String[] args) throws Exception
{
// AccountDao accountDao = new AccountDao();
// accountDao.transfer(5172, 5173, 100000);
System.out.println("Connection.TRANSACTION_NONE : " + Connection.TRANSACTION_NONE);
System.out.println("Connection.TRANSACTION_READ_UNCOMMITTED : " + Connection.TRANSACTION_READ_UNCOMMITTED);
System.out.println("Connection.TRANSACTION_READ_COMMITTED : " + Connection.TRANSACTION_READ_COMMITTED);
System.out.println("Connection.TRANSACTION_REPEATABLE_READ : " + Connection.TRANSACTION_REPEATABLE_READ);
System.out.println("Connection.TRANSACTION_SERIALIZABLE : " + Connection.TRANSACTION_SERIALIZABLE);
Connection con = ConnectionFactory.getConnection();
DatabaseMetaData dbmd = con.getMetaData();
System.out.println("-------------------");
System.out.println(dbmd.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE));
System.out.println(dbmd.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_UNCOMMITTED));
System.out.println(dbmd.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED));
System.out.println(dbmd.supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ));
System.out.println(dbmd.supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE));
con.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -