2013-02-19 2 views
0

Я создал схему Oracle с помощью программы моделирования базы данных жаб. Обычно я использую SQL-разработчик для импорта новой схемы с помощью оператора SQL. Теперь я хочу создать программу Java, которая автоматизирует этот процесс. Я создал до сих пор это Java-код, который открывает соединение с Oracle:Создание схемы 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-программа, которую я могу использовать для этой же цели?

+0

вы можете посмотреть на http://www.coderanch.com/t/298527/JDBC/databases/executing-PL-SQL-JDBC, однако это зависит от того, как структурирован файл PL/SQL. – BigMike

+0

Ant? Maven? Хадсон? – APC

+0

@ APC Я использую Maven. –

ответ

3

Я бы рекомендовал использовать что-то существующее и не писать собственную реализацию. Есть много мощных инструментов там для этой задачи:

Maven SQL Plugin [mojo.codehaus.org/sql-maven-plugin/examples/execute.html]

DBUnit Fileloader [www.dbunit. орг/howto.html # fileloader]

или весной (если и вынуждены использовать его :-)) [static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ jdbc.html]

Отметьте также эту статью: [stackoverflow.com/questions/7565420/creat е-и-чистые дб-установка только однократно-для-тестирования, весь-DAOS]

Надеется, что это помогает ...

Смежные вопросы