package org.googlecode.jef.spring;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Savepoint;
import javax.sql.DataSource;
import jef.common.log.LogUtil;
import jef.database.DbUtils;
import jef.database.dialect.AbstractDialect;
import jef.database.test.JDBCUtil;
import org.junit.Test;
public class SavePointTest {
@Test
public void testMetadata() throws SQLException{
String url=AbstractDialect.getProfile("mysql").generateUrl("localhost", 3306, "test");
DataSource ds=DbUtils.createSimpleDataSource(url, "root", "admin");
System.out.println(url);
Connection conn=ds.getConnection();
DatabaseMetaData meta=conn.getMetaData();
LogUtil.show(meta.getCatalogs());
// int TRANSACTION_NONE = 0;
// int TRANSACTION_READ_UNCOMMITTED = 1;
// int TRANSACTION_READ_COMMITTED = 2;
// int TRANSACTION_REPEATABLE_READ = 4;
// int TRANSACTION_SERIALIZABLE = 8;
System.out.println(meta.getDefaultTransactionIsolation());//返回当前数据局默认隔离级别
System.out.println(meta.getURL());
System.out.println(meta.getUserName());
LogUtil.show(meta.getTypeInfo());
}
@Test
public void testSp() throws SQLException{
String url=AbstractDialect.getProfile("mysql").generateUrl("localhost", 3306, "test");
DataSource ds=DbUtils.createSimpleDataSource(url, "root", "admin");
Connection conn=ds.getConnection();
if(!JDBCUtil.existTable(conn, "tt")){
JDBCUtil.execute(conn, "create table tt(id integer,name varchar(10))");
}
System.out.println("Support:"+conn.getMetaData().supportsSavepoints());
conn.setAutoCommit(false);
JDBCUtil.execute(conn,"insert into tt values (1,'a'),(2,'x')");
Savepoint sp1=conn.setSavepoint("1");
JDBCUtil.execute(conn,"insert into tt values (3,'b'),(4,'x')");
Savepoint sp2=conn.setSavepoint("2");
JDBCUtil.execute(conn,"insert into tt values (5,'c'),(6,'x')");
conn.rollback(sp2);
// conn.commit();
conn.close();
}
}