2つの異なるテーブルで2つの挿入クエリを実行する必要がありました。Oracleの複数の挿入クエリ
私はOracle/Javaの組み合わせを使用しています。
この場合、どのようなオプションがありますか?
2つの異なるテーブルで2つの挿入クエリを実行する必要がありました。Oracleの複数の挿入クエリ
私はOracle/Javaの組み合わせを使用しています。
この場合、どのようなオプションがありますか?
最も簡単な方法は、同じ接続を使用して連続して2つの挿入を行うことです。 2つの挿入が同じトランザクション内で発生するようにすることを要点とする場合、接続で自動コミットを無効にし、2回目の挿入後に明示的にコミットすることを確認します。
もう1つの方法は、挿入を行うOracleストアドプロシージャを作成し、PreparedStatementを使用してJavaから呼び出すことです。
サンプルはdevdailyです。
package com.devdaily.sqlprocessortests;
import java.sql.*;
public class BasicJDBCDemo
{
Connection conn;
public static void main(String[] args)
{
new BasicJDBCDemo();
}
public BasicJDBCDemo()
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost/coffeebreak";
conn = DriverManager.getConnection(url, "username", "password");
doTests();
conn.close();
}
catch (ClassNotFoundException ex) {System.err.println(ex.getMessage());}
catch (IllegalAccessException ex) {System.err.println(ex.getMessage());}
catch (InstantiationException ex) {System.err.println(ex.getMessage());}
catch (SQLException ex) {System.err.println(ex.getMessage());}
}
private void doTests()
{
doSelectTest();
doInsertTest(); doSelectTest();
doUpdateTest(); doSelectTest();
doDeleteTest(); doSelectTest();
}
private void doSelectTest()
{
System.out.println("[OUTPUT FROM SELECT]");
String query = "SELECT COF_NAME, PRICE FROM COFFEES";
try
{
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next())
{
String s = rs.getString("COF_NAME");
float n = rs.getFloat("PRICE");
System.out.println(s + " " + n);
}
}
catch (SQLException ex)
{
System.err.println(ex.getMessage());
}
}
private void doInsertTest()
{
System.out.print("\n[Performing INSERT] ... ");
try
{
Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO COFFEES " +
"VALUES ('BREAKFAST BLEND', 200, 7.99, 0, 0)");
}
catch (SQLException ex)
{
System.err.println(ex.getMessage());
}
}
private void doUpdateTest()
{
System.out.print("\n[Performing UPDATE] ... ");
try
{
Statement st = conn.createStatement();
st.executeUpdate("UPDATE COFFEES SET PRICE=4.99 WHERE COF_NAME='BREAKFAST BLEND'");
}
catch (SQLException ex)
{
System.err.println(ex.getMessage());
}
}
private void doDeleteTest()
{
System.out.print("\n[Performing DELETE] ... ");
try
{
Statement st = conn.createStatement();
st.executeUpdate("DELETE FROM COFFEES WHERE COF_NAME='BREAKFAST BLEND'");
}
catch (SQLException ex)
{
System.err.println(ex.getMessage());
}
}
}
StoredProceduresで確認し、JDBC APIでPreparedStatementで実行できます。そのインターンは2つのresultSetを返します。これはgetMoreResults()メソッドで取得できます。結果セットを別々に処理することができます。
あなたは、このようなマルチテーブルのインサートを使用することができる2つの別々のテーブルに同じデータを挿入しようとしている場合:
insert all
into table1(a, b)
into table2(a, b)
select 1 a, 2 b from dual;
HM、JDBC APIを使用してSQLが一つの選択肢だろう...正確には何ですか問題?今日は何を使用していますか? – home
私はフォームを持っていました。フォームの提出時に、私は同時に2つの異なるテーブルにデータを挿入する必要があります。 yr 2番目の質問を理解できませんでした.... – Ankit
以前にJavaでプログラミングしたことがありますか? –