⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dboracleconnection.java

📁 用来为垂直搜索引擎抓取数据的采集系统
💻 JAVA
字号:
/*
 * Created by xuehao at Nov 29, 2005
 */
package org.indigo.db;

import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OraclePreparedStatement;
import oracle.jdbc.OracleStatement;
import oracle.sql.CLOB;

import org.indigo.log.FileLoggerError;
import org.indigo.log.FileLoggerInsertDBError;
import org.indigo.util.DBConfig;
/**
 * 和DBConnection功能相似,唯一的不同此类
 * 是提供了对Oracle数据库的操作方法和连接。
 * @author wbz
 *
 */
public class DBOracleConnection
{
    private static DBOracleConnection itsInstance = new DBOracleConnection();
    private String itsJDBCDriver = null;
    private String itsJDBCUrl = null;
    private Connection itsRealConn = null;
    String host = "220.178.27.84";
    String port = "1521";
//    String database = "platform";
    String database = "zxuehao";
    String user = "iim_405";
    String password = "ROAD887ANHUI";
/**
 * 构造函数,获取数据库配置信息。
 *
 */
    private DBOracleConnection()
    {
        String host,port,database,str;
       
        host = DBConfig.getInstance().getProperty( "host" ).trim();
        port = DBConfig.getInstance().getProperty( "port" ).trim();
        database = DBConfig.getInstance().getProperty( "database" ).trim();
        user = DBConfig.getInstance().getProperty( "user" ).trim();
        password = DBConfig.getInstance().getProperty( "password" ).trim();
        
        itsJDBCUrl = "jdbc:oracle:thin:@" + host + ":" + port + ":" + database;
        itsJDBCDriver = "oracle.jdbc.driver.OracleDriver";
        try
        {
            Class.forName(itsJDBCDriver);
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }
    }

   
    public static DBOracleConnection getInstance()
    {
        return itsInstance;
    }
    /**
     * 关闭数据库连接
     * @return
     */
    public void close()
    {
        if (itsRealConn == null)
            return;
        try
        {
            if (itsRealConn.isClosed())
                return;
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
        try
        {
            itsRealConn.close();
        } catch (SQLException e1)
        {
            e1.printStackTrace();
        } finally
        {
            itsRealConn = null;
        }
    }
    /**
     * 当从oracle的clob类型的字段中获取数据时,
     * 需要把clob类型转换为字符串类型。
     * 此方法是把指定的clob字段转化为字符串。
     * @param clob
     * @return
     */
    public static String clobTOstring(Clob clob)
	{
		String s1= "";   
		char   ac[] = new char[200];   
		if(clob == null)   
			return   null;   
		Reader reader;
		try 
		{
			reader = clob.getCharacterStream();		  
			int   i;   
			while((i = reader.read(ac,0,200)) != -1)     
				s1 = s1+ new String(ac, 0, i);  
			reader.close();   
		}   
		catch(Exception   exception1)   
		{   
		}   
		return  s1;
	}
    /**
     * 执行查询操作。
     * @param sql
     * @return
     */
    public ResultSet executeQuery( String sql )
    {
        ResultSet rs=null;

        OracleStatement stmt = null;
		try
		{
			if( itsRealConn==null || itsRealConn.isClosed() )
			{
				itsRealConn = DriverManager.getConnection( itsJDBCUrl,this.user,this.password );
			}
			stmt = (OracleStatement)itsRealConn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE );
			rs = stmt.executeQuery( sql );

		} catch (SQLException e)		
		{
			e.printStackTrace();
		}
/*        
        Statement stmt = null;
        try
        {
            if( itsRealConn==null || itsRealConn.isClosed() )
            {
                itsRealConn = DriverManager.getConnection( itsJDBCUrl );
            }
            stmt = itsRealConn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE );
            rs = stmt.executeQuery( sql );
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
*/
        return rs;
    }
/**
 * 执行插入操作。
 * @param sql
 */
    public void executeInsert(String sql)
    {
        OracleStatement stmt = null;
        try
        {
            if (itsRealConn == null || itsRealConn.isClosed())
            {
                itsRealConn = DriverManager.getConnection(itsJDBCUrl,
                        this.user, this.password);
            }
            stmt = (OracleStatement) itsRealConn
                    .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                            ResultSet.CONCUR_UPDATABLE);
            stmt.execute(sql);

        } catch (SQLException e)
        {
            FileLoggerError.getInstance().warning(sql);
            FileLoggerError.getInstance().warning(e.getMessage());
            e.printStackTrace();
        }
        try
        {
            if (stmt != null)
            {
                stmt.close();
                stmt = null;
            }
        } catch (SQLException e1)
        {
            e1.printStackTrace();
        }

    }
/**
 * 执行插入操作,
 * 此法是当需要对含有clob类型字段的表中插入数据时用到的方法。
 * @param sql
 * @param clobStr
 */
    public void executeInsert(String sql, String clobStr)
    {

        OraclePreparedStatement ps = null;
        CLOB clob = null;
        try
        {
            if (itsRealConn == null || itsRealConn.isClosed())
            {
                itsRealConn = DriverManager.getConnection(itsJDBCUrl,
                        this.user, this.password);
//                System.out.println(this.user+":"+this.password);
            }
            ps = (OraclePreparedStatement) itsRealConn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,
                            ResultSet.CONCUR_UPDATABLE);

            clob = CLOB.createTemporary(itsRealConn, true, CLOB.DURATION_SESSION);
            clob.putString(1, clobStr);
            ps.setCLOB(1, clob);
            ps.execute();
            itsRealConn.commit();

        } catch (SQLException e)
        {
           // System.out.println(sql);
            FileLoggerInsertDBError.getInstance().info(sql+"\n"+ e.getMessage()+"\n");
            e.printStackTrace();

        } finally
        {
            try
            {
                if (clob != null)
                {
                    if (clob.isOpen())
                        clob.close();
                    clob = null;
                }
                if ((ps != null))
                {
                    ps.close();
                    ps = null;
                }

            } catch (SQLException e1)
            {
                e1.printStackTrace();
            }
        }
    }
    public static void main(String args[])
    {
    	DBOracleConnection.getInstance().executeInsert(null, "clobStr");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -