Я создал схему 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-программа, которую я могу использовать для этой же цели?
вы можете посмотреть на http://www.coderanch.com/t/298527/JDBC/databases/executing-PL-SQL-JDBC, однако это зависит от того, как структурирован файл PL/SQL. – BigMike
Ant? Maven? Хадсон? – APC
@ APC Я использую Maven. –