0
A
回答
0
最直接的方法是使用相同的連接順序執行兩個插入。假設你的觀點的一部分是你希望兩個插入發生在同一個事務中,那麼確保你已經在連接上禁用了自動提交,並且在第二次插入之後顯式提交。
另一種選擇是編寫一個執行插入操作的Oracle存儲過程,並使用PreparedStatement從Java中調用它。
0
來自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());
}
}
}
0
您可以使用StoredProcedures進行檢查,並在JDBC api中使用PreparedStatement執行。該實習生將返回兩個resultSets,您可以通過getMoreResults()方法獲得這兩個resultSets。然後可以分別處理結果集。
1
如果你想在同一數據插入到兩個獨立的表,你可以使用一個多表插入這樣的:
insert all
into table1(a, b)
into table2(a, b)
select 1 a, 2 b from dual;
相關問題
- 1. Oracle查詢插入空Blob
- 2. 從Oracle表插入查詢
- 3. 在單個Oracle SQL查詢中插入多行:
- 4. 從oracle中的select查詢插入表
- 5. 多個插入與查詢
- 6. 多個Oracle查詢
- 7. 在MySQL中插入多個查詢
- 8. 從子查詢中插入多個
- 9. 加入多個子查詢Oracle
- 10. SQL查詢,加入多個表,Oracle
- 11. Oracle SQL插入單行子查詢返回多個行
- 12. 一個查詢插入多行多列
- 13. 基於select的多個插入查詢?
- 14. 在Oracle中爲每個查詢執行插入一個序列
- 15. 如何使用oracle在一個查詢中插入兩個表?
- 16. 如何在oracle 11g中插入新行插入查詢sql
- 17. 如何在oracle中插入2個帶序列的查詢?
- 18. 多個oracle查詢問題
- 19. 加入兩個Oracle查詢
- 20. Oracle插入使用FLASHBACK查詢
- 21. 插入查詢到Oracle數據庫
- 22. 恢復從多個插入查詢
- 23. 插入多行1個查詢
- 24. 如何使用多個插入查詢?
- 25. 值插入多個表單查詢
- 26. 使用單個查詢插入多行
- 27. Sqllite插入查詢多個數據庫
- 28. 將查詢插入多個數據庫
- 29. 插入多個ID在MySQL查詢?
- 30. 用一個查詢插入多行
HM,使用JDBC API將是一個選擇SQL ......到底是什麼問題?你今天用什麼? – home
我有一個表格。在提交表單時,我需要同時將數據插入到兩個不同的表中。無法理解你的第二個問題...... – Ankit
你曾經在Java中編程過嗎? –