0

Toad データベース モデラーで Oracle スキームを作成しました。私は通常、SQL 開発者を使用して、SQL ステートメントで新しいスキームをインポートします。今、このプロセスを自動化する Java プログラムを作成したいと考えています。これまでのところ、Oracle への接続を開くこの Java コードを作成しました。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import oracle.jdbc.pool.OracleConnectionPoolDataSource;
import org.junit.BeforeClass;
import org.junit.Test;

public class OracleCreateScheme
{

    public OracleCreateScheme()
    {
    }

    @BeforeClass
    public static void setUpClass() throws Exception
    {
        // rcarver - setup the jndi context and the datasource
        try
        {
            // Create initial context
            System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                    "org.apache.naming.java.javaURLContextFactory");
            System.setProperty(Context.URL_PKG_PREFIXES,
                    "org.apache.naming");
            InitialContext ic = new InitialContext();

            ic.createSubcontext("java:");
            ic.createSubcontext("java:/comp");
            ic.createSubcontext("java:/comp/env");
            ic.createSubcontext("java:/comp/env/jdbc");

            // Construct DataSource
            OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
            ds.setURL("jdbc:oracle:thin:@host:port:db");
            ds.setUser("admin");
            ds.setPassword("qwerty");

            ic.bind("java:/comp/env/jdbc/oracle", ds);
        }
        catch (NamingException ex)
        {
            //Logger.getLogger(MyDAOTest.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    @Test
    public void createOracleScheme() throws SQLException, NamingException
    {

        Context initContext = new InitialContext();
        Context webContext = (Context) initContext.lookup("java:/comp/env");

        DataSource ds = (DataSource) webContext.lookup("jdbc/Oracle");

        String SqlStatement = null;

        if (ds == null)
        {
            throw new SQLException();
        }


        Connection conn = ds.getConnection();
        if (conn == null)
        {
            throw new SQLException();
        }

        PreparedStatement ps = null;
        ResultSet resultSet = null;

        try
        {
            conn.setAutoCommit(false);
            boolean committed = false;
            try
            {

                ps = conn.prepareStatement(SqlStatement);
                resultSet = ps.executeQuery();

                conn.commit();
                committed = true;
            }
            finally
            {
                if (!committed)
                {
                    conn.rollback();
                }
            }
        }
        finally
        {
            ps.close();
            conn.close();
        }

    }
}

SQL ファイルを Oracle で実行するためにコードを変更する方法を教えてください。また、同じ目的で使用できる既製の Java プログラムはありますか?

4

1 に答える 1

3

独自の実装を作成するのではなく、既存のものを使用することをお勧めします。このタスクには、多くの強力なツールがあります。

Maven SQL プラグイン [mojo.codehaus.org/sql-maven-plugin/examples/execute.html]

DBUnit ファイルローダー [www.dbunit.org/howto.html#fileloader]

またはSpring(強制的に使用する場合:-))[static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html]

この記事もチェックしてください:[stackoverflow.com/questions/7565420/create-and-clean-db-setup-only-once-for-testing-all-daos]

お役に立てれば ...

于 2013-02-19T15:16:50.120 に答える