/*
* Copyright 2008 biaoping.yin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.frameworkset.mysql;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;
import javax.transaction.RollbackException;
import org.junit.Test;
import com.frameworkset.common.poolman.DBUtil;
import com.frameworkset.common.poolman.PreparedDBUtil;
import com.frameworkset.common.poolman.Record;
import com.frameworkset.common.poolman.handle.NullRowHandler;
import com.frameworkset.orm.transaction.TransactionManager;
public class mysql
{
public static void main(String[] args)
{
createTable();
}
public static void createTable()
{
String droptableinfo = "" +
" drop table TABLEINFO ";
String createtableinfo = " CREATE TABLE TABLEINFO "+
"("+
" TABLE_NAME VARCHAR(255) NOT NULL,"+
"TABLE_ID_NAME VARCHAR(255),"+
"TABLE_ID_INCREMENT int DEFAULT 1,"+
"TABLE_ID_VALUE int DEFAULT 0,"+
"TABLE_ID_GENERATOR VARCHAR(255),"+
"TABLE_ID_TYPE VARCHAR(255),"+
"TABLE_ID_PREFIX VARCHAR(255)"+
")";
String addpk = "ALTER TABLE TABLEINFO ADD CONSTRAINT PK_TABLEINFO0 PRIMARY KEY (TABLE_NAME)";
String insertsql = "INSERT INTO TABLEINFO ( TABLE_NAME, TABLE_ID_NAME, TABLE_ID_INCREMENT, TABLE_ID_VALUE,"+
"TABLE_ID_GENERATOR, TABLE_ID_TYPE, TABLE_ID_PREFIX ) VALUES ("+
"'test', 'id', 1, 0, NULL, 'int', NULL) ";
String insertsql1_ = "INSERT INTO TABLEINFO ( TABLE_NAME, TABLE_ID_NAME, TABLE_ID_INCREMENT, TABLE_ID_VALUE,"+
"TABLE_ID_GENERATOR, TABLE_ID_TYPE, TABLE_ID_PREFIX ) VALUES ("+
"'cim_dbpool', 'id', 1, 0, 'seq_dbpool', 'sequence', NULL) ";
String insertsql2_ = "INSERT INTO sequence.sequence_data (sequence_name) VALUE ('seq_dbpool') ";
PreparedDBUtil dbutil = new PreparedDBUtil();
try
{
dbutil.preparedDelete("mysql",droptableinfo);
dbutil.executePrepared();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
dbutil.preparedUpdate("mysql",createtableinfo);
dbutil.executePrepared();
dbutil.preparedUpdate("mysql",addpk);
dbutil.executePrepared();
dbutil.preparedInsert("mysql",insertsql);
dbutil.executePrepared();
dbutil.preparedInsert("mysql",insertsql1_);
dbutil.executePrepared();
dbutil.preparedInsert("mysql",insertsql2_);
dbutil.executePrepared();
try
{
String droptest = "drop table test";
dbutil.preparedDelete("mysql",droptest);
dbutil.executePrepared();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
String createtest = "create table test(id int,blobname longblob,clobname MEDIUMTEXT)";
// String proce_tt =
// "CREATE PROCEDURE tt"+
// "" +
// "begin null; end;";
//
dbutil.preparedUpdate("mysql",createtest);
dbutil.executePrepared();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// @Test
// public void testBlobWrite()
// {
//
// }
/**
* 第一种插入blob字段的方法,通用的模式
* @throws Exception
*/
@Test
public void testBlobWrite() throws Exception
{
PreparedDBUtil dbUtil = new PreparedDBUtil();
try {
dbUtil.preparedInsert("mysql", "insert into test(id,blobname) values(?,?)");
dbUtil.setString(1, DBUtil.getNextStringPrimaryKey("test"));
dbUtil.setBlob(2, new java.io.File("resources/lob/manager.rar"));//直接将文件存储到大字段中
dbUtil.executePrepared();
} catch (Exception e) {
// TODO Auto-generated catch block
throw e;
}
finally
{
}
}
//
/**
* 针对oracle Blob字段的插入操作
*/
@Test
public void testBigBlobWrite() throws Exception
{
PreparedDBUtil dbUtil = new PreparedDBUtil();
TransactionManager tm = new TransactionManager();
try {
//启动事务
tm.begin();
//先插入一条记录,blob字段初始化为empty_lob
dbUtil.preparedInsert("mysql", "insert into test(id,blobname) values(?,?)");
String id = DBUtil.getNextStringPrimaryKey("test");
dbUtil.setString(1, id);
dbUtil.setNull(2,java.sql.Types.BLOB);//先设置空的blob字段
dbUtil.executePrepared();
//查找刚才的插入的记录,修改blob字段的值为一个文件
dbUtil = new PreparedDBUtil();
dbUtil.preparedUpdate("mysql","update test set blobname =? where id = ?");
dbUtil.setBlob(1, new java.io.File("resources/lob/manager.rar"));
dbUtil.setString(2, id);
dbUtil.executePrepared();
// BLOB blob = (BLOB)dbUtil.getBlob(0, "blobname");
// if(blob != null)
// {
// DBUtil.updateBLOB(blob, new java.io.File("resources/lob/manager.rar"));
// }
tm.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
tm.rollback();
} catch (RollbackException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
throw e;
}
finally
{
tm = null;
dbUtil = null;
}
}
//
//
/**
* 大字段的读取
*/
@Test
public void testBlobFileRead() throws Exception
{
// TransactionManager tm = new TransactionManager();
PreparedDBUtil dbUtil = new PreparedDBUtil();
try {
//查询大字段内容并且将大字段存放到文件中
dbUtil.preparedSelect("mysql", "select id,blobname from test");
dbUtil.executePreparedWithRowHandler(new NullRowHandler(){
@Override
public void handleRow(Record origine) throws Exception
{
origine.getFile("blobname", new java.io.File("resources/lob/reader/dominspector_" + origine.getRowid() +".rar"));
}});
System.out.println("testClobRead dbUtil.size():"+dbUtil.size());
} catch (Exception e) {
// TODO Auto-generated catch block
throw e;
}
finally
{
}
}
/**
* 大字段的读取
*/
@Test
public void testBlobRead() throws Exception
{
createTable();
this.testBigBlobWrite();
// TransactionManager tm = new TransactionManager();
PreparedDBUtil dbUtil = new PreparedDBUtil();
try {
//查询大字段内容并且将大字段存放到文件中
dbUtil.preparedSelect("mysql", "select id,blobname from test");
dbUtil.executePreparedWithRowHandler(new NullRowHandler(){
@Override
public void handleRow(Record origine) throws Exception
{
Blob blob = origine.getBlob("blobname");
// origine.getFile("blobname", new java.io.File("resources/lob/reader/dominspector_" + origine.getRowid() +".rar"));
}});
System.out.println("testClobRead dbUtil.size():"+dbUtil.size());
} catch (Exception e) {
// TODO Auto-generated catch block
throw e;
}
finally
{
}
}
//
/**
* clob字段的写入
*/
@Test
public void testClobWrite() throws Exception
{
PreparedDBUtil dbUtil = new PreparedDBUtil();
try {
dbUtil.preparedInsert("mysql", "insert into test(id,clobname) values(?,?)");
dbUtil.setString(1, DBUtil.getNextStringPrimaryKey("test"));
dbUtil.setClob(2,"clobvalue");//直接将字符串存储到clob字段中
dbUtil.executePrepared();
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
throw e;
}
finally
{
}
}
/**
* 针对oracle Clob字段的插入操作
*/
@Test
public void testBigClobWrite() throws Exception
{
PreparedDBUtil dbUtil = new PreparedDBUtil();
TransactionManager tm = new TransactionManager();
try {
//启动事务
tm.begin();
//先插入一条记录,blob字段初始化为empty_lob
dbUtil.preparedInsert("mysql", "insert into test(id,clobname) values(?,?)");
String id = DBUtil.getNextStringPrimaryKey("test");
dbUtil.setString(1, id);
dbUtil.setNull(2,java.sql.Types.CLOB);//先设置空的blob字段
dbUtil.executePrepared();
//查找刚才的插入的记录,修改blob字段的值为一个文件
dbUtil = new PreparedDBUtil();
dbUtil.preparedUpdate("mysql", "update test set clobname =? where id = ?");
dbUtil.setClob(1, new java.io.File("resources/lob/route.txt"));
dbUtil.setString(2, id);
dbUtil.executePrepared();
// CLOB clob = (CLOB)dbUtil.getClob(0, "clobname");
// if(clob != null)
// {
// DBUtil.updateCLOB(clob, new java.io.File("d:\\route.txt"));
// }
tm.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
try {
tm.rollback();
} catch (RollbackException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
throw e;
}
finally
{
tm = null;
dbUtil = null;
}
}
//
/**
* clob字段的读取
*/
@Test
public void testClobFileRead() throws Exception
{
PreparedDBUtil dbUtil = new PreparedDBUtil();
try {
//查询大字段内容并且将大字段存放到文件中
dbUtil.preparedSelect( "mysql", "select id,clobname from test");
dbUtil.executePreparedWithRowHandler(new NullRowHandler(){
@Override
public void handleRow(Record origine) throws Exception
{
origine.getFile("clobname", new java.io.File("resources/lob/reader/route" + origine.getRowid() + ".txt"));
}});
System.out.println("testClobRead dbUtil.size():"+dbUtil.size());
// for(int i = 0; i < dbUtil.size(); i ++)
// {
//
// dbUtil.getFile(i, "clobname", new java.io.File("resources/lob/route" + i + ".txt")); //读取clob字段到文件中
//// String clobvalue = dbUtil.getString(i, "clobname");//获取clob字段到字符串变量中
//// Clob clob = dbUtil.getClob(i, "clobname");//获取clob字段值到clob类型变量中
// }
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
throw e ;
}
finally
{
dbUtil = null;
}
}
/**
* clob字段的读取
*/
@Test
public void testClobRead() throws Exception
{
this.createTable();
this.testBigClobWrite();
PreparedDBUtil dbUtil = new PreparedDBUtil();
try {
//查询大字段内容并且将大字段存放到文件中
dbUtil.preparedSelect( "mysql", "select id,clobname from test");
dbUtil.executePreparedWithRowHandler(new NullRowHandler(){
@Override
public void handleRow(Record origine) throws Exception
{
Clob clob = origine.getClob("clobname");
// origine.getFile("clobname", new java.io.File("resources/lob/reader/route" + origine.getRowid() + ".txt"));
}});
System.out.println("testClobRead dbUtil.size():"+dbUtil.size());
// for(int i = 0; i < dbUtil.size(); i ++)
// {
//
// dbUtil.getFile(i, "clobname", new java.io.File("resources/lob/route" + i + ".txt")); //读取clob字段到文件中
//// String clobvalue = dbUtil.getString(i, "clobname");//获取clob字段到字符串变量中
//// Clob clob = dbUtil.getClob(i, "clobname");//获取clob字段值到clob类型变量中
// }
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
throw e ;
}
finally
{
dbUtil = null;
}
}
}