package com.frameworkset.common;
import java.sql.SQLException;
import javax.transaction.RollbackException;
import org.junit.Test;
import com.frameworkset.common.poolman.CallableDBUtil;
import com.frameworkset.common.poolman.PreparedDBUtil;
import com.frameworkset.common.poolman.Record;
import com.frameworkset.common.poolman.handle.RowHandler;
import com.frameworkset.orm.transaction.TransactionManager;
public class TestCallableDBUtil {
public @Test void testTest_pWithPositionIndex()
{
CallableDBUtil callableDBUtil = new CallableDBUtil();
try
{
// callableDBUtil.execute("{call test_p(1,'ss',3,4)}");
callableDBUtil.prepareCallable("{call test_p(?,?,?,?,?)}");
callableDBUtil.setInt(1, 10);
callableDBUtil.registerOutParameter(2, java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter(3, java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter(4, java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter(5, java.sql.Types.INTEGER);
callableDBUtil.executeCallable();
System.out.println("name1:" + callableDBUtil.getString(2));
System.out.println("name2:" + callableDBUtil.getString(3));
System.out.println("test:" + callableDBUtil.getInt(4));
System.out.println("nomath:" + callableDBUtil.getInt(5));
}
catch(Exception e)
{
e.printStackTrace();
}
}
public @Test void testTest_pWithNameIndex()
{
CallableDBUtil callableDBUtil = new CallableDBUtil();
try
{
callableDBUtil.prepareCallable("{call test_p(?,?,?,?,?)}");
//不允许的操作: Ordinal binding and Named binding cannot be combined!
callableDBUtil.setInt("id", 10);
callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
callableDBUtil.executeCallable();
System.out.println("name1:" + callableDBUtil.getString("name"));
System.out.println("name2:" + callableDBUtil.getString("name1"));
System.out.println("test:" + callableDBUtil.getInt("test"));
System.out.println("nomatch:" + callableDBUtil.getInt("nomatch"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
public @Test void testTest_pWithNameIndexForXMLString()
{
CallableDBUtil callableDBUtil = new CallableDBUtil();
try
{
callableDBUtil.prepareCallable("{call test_p(?,?,?,?,?)}");
//不允许的操作: Ordinal binding and Named binding cannot be combined!
callableDBUtil.setInt("id", 10);
callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
String xmlString = callableDBUtil.executeCallableForXML();
System.out.println("xmlString:" + xmlString);
// System.out.println("name1:" + callableDBUtil.getString("name"));
// System.out.println("name2:" + callableDBUtil.getString("name1"));
// System.out.println("test:" + callableDBUtil.getInt("test"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
public @Test void testTest_pWithNameIndexForXMLStringRowHandler()
{
CallableDBUtil callableDBUtil = new CallableDBUtil();
try
{
callableDBUtil.prepareCallable("{call test_p(?,?,?,?,?)}");
//不允许的操作: Ordinal binding and Named binding cannot be combined!
callableDBUtil.setInt("id", 10);
callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
String xmlString = callableDBUtil.executeCallableForXML(new com.frameworkset.common.poolman.handle.RowHandler()
{
/**
* 对已经处理好的行记录进行处理的逻辑
* @param rowValue
*/
public void handleRow(Object rowValue,Record origine)
{
Object objects = (Object)rowValue;
System.out.println("objects rowhandler:" + objects);
// System.out.println("objects【0】:" + objects[0]);
// System.out.println(objects[1]);
}
});
System.out.println("name1:" + callableDBUtil.getString("name"));
System.out.println("name2:" + callableDBUtil.getString("name1"));
System.out.println("xmlString:" + xmlString);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public @Test void testTest_pWithNameIndexForObject()
{
CallableDBUtil callableDBUtil = new CallableDBUtil();
try
{
callableDBUtil.prepareCallable("{call test_p(?,?,?,?,?)}");
//不允许的操作: Ordinal binding and Named binding cannot be combined!
callableDBUtil.setInt("id", 10);
callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
Test_p tets = (Test_p)callableDBUtil.executeCallableForObject(Test_p.class);
System.out.println("Test_p is " + tets);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public @Test void testoldMethod()
{
PreparedDBUtil callableDBUtil = new PreparedDBUtil();
// try {
//
// SQLResult result = callableDBUtil.execute("select * from tableinfo");
// System.out.println(result.size());
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
public @Test void testTest_pWithNameIndexForObjectWithRowHandler()
{
CallableDBUtil callableDBUtil = new CallableDBUtil();
try
{
callableDBUtil.prepareCallable("{call test_p(?,?,?,?)}");
//不允许的操作: Ordinal binding and Named binding cannot be combined!
callableDBUtil.setInt("id", 10);
callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
Test_p tets = (Test_p)callableDBUtil.executeCallableForObject(Test_p.class,new RowHandler(){
public void handleRow(Object rowValue, Record record) {
Test_p test_p = (Test_p)rowValue;
try {
test_p.setTest(record.getString("test")+"天马");
test_p.setName1(record.getString("name1"));
test_p.setName(record.getString("name"));
} catch (SQLException e) {
e.printStackTrace();
}
}
});
// System.out.println("name1:" + callableDBUtil.getString("name"));
// System.out.println("name2:" + callableDBUtil.getString("name1"));
System.out.println("Test_p is " + tets);
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 经过测试证明存储过程中如果没有对插入/删除/修改操作做事务提交、回滚时,可以通过poolman
* 的事务框架来管理事务;如果存储过程中对插入/删除/修改操作已经做了事务提交或者回滚时,那么应用的事务和存储过程中
* 中的事务就是分离的两个事务。
* @param i 为0时回滚事务,1时提交事务
*/
public @Test void testTest_pWithNameIndexForObjectTx()
{
int i = 1;
TransactionManager tm = new TransactionManager();
try
{
tm.begin();
CallableDBUtil callableDBUtil = new CallableDBUtil();
callableDBUtil.prepareCallable("{call test_p(?,?,?,?)}");
//不允许的操作: Ordinal binding and Named binding cannot be combined!
callableDBUtil.setInt("id", 10);
callableDBUtil.registerOutParameter("name", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("name1", java.sql.Types.VARCHAR);
callableDBUtil.registerOutParameter("test", java.sql.Types.INTEGER);
callableDBUtil.registerOutParameter("nomatch", java.sql.Types.INTEGER);
Test_p tets = (Test_p)callableDBUtil.executeCallableForObject(Test_p.class);
System.out.println("name1:" + callableDBUtil.getString("name"));
System.out.println("name2:" + callableDBUtil.getString("name1"));
System.out.println("Test_p is " + tets);
callableDBUtil.executeInsert("insert into test(id,name) values('11','name11')");
if(i == 0)
tm.rollback();
else
tm.commit();
}
catch(Exception e)
{
try {
tm.rollback();
} catch (RollbackException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
// @SuppressWarnings("finally")
static boolean test()
{
try
{
return true;
}
finally
{
return false;
}
}
public static void main(String[] args)
{
System.out.println(test());
// System.out.println("1---------------------------------------------------testTest_pWithPositionIndex()");
// testTest_pWithPositionIndex();
// System.out.println("2---------------------------------------------------testTest_pWithNameIndex()");
// testTest_pWithNameIndex();
// System.out.println("3---------------------------------------------------testTest_pWithNameIndexForObject()");
// testTest_pWithNameIndexForObject();
// System.out.println("4---------------------------------------------------testTest_pWithNameIndexForObjectTx()");
// testTest_pWithNameIndexForObjectTx(0);
// System.out.println("5---------------------------------------------------testTest_pWithNameIndexForXMLString()");
// testTest_pWithNameIndexForXMLString();
// System.out.println("6---------------------------------------------------testTest_pWithNameIndexForXMLStringRowHandler()");
// testTest_pWithNameIndexForXMLStringRowHandler();
// System.out.println("7---------------------------------------------------testTest_pWithNameIndexForObjectWithRowHandler()");
// testTest_pWithNameIndexForObjectWithRowHandler();
// CallableDBUtil.debugStatus();
// testoldMethod();
// testTest_pWithNameIndexForXMLString();
}
}