2014-06-17 108 views
0

對於使用JDBC訪問Java中的數據庫的概念,我特別不熟悉。我使用MySql作爲我的DBMS,我只想知道是否有方法在我的數據庫中插入記錄而不使用MySql的「insert」語句?在不使用插入語句的情況下在JDBC中插入記錄

+1

爲什麼?請解釋你爲什麼不想使用'INSERT'。這只是學術上的好奇心,還是你對「INSERT」有些厭惡? –

+0

@Mark Rotteveel前者即學術好奇心 –

回答

1

純粹看JDBC,可以自己將新行添加到數據庫中,而無需使用INSERT。但是,不能保證實際的JDBC驅動程序不使用INSERT語句。

try (
    Connection con = DriverManager.getConnection(....); 
    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
     ResultSet.CONCUR_UPDATABLE); 
    ResultSet rs = stmt.executeQuery("SELECT col1, col2, col3 FROM someTable"); 
) { 
    rs.moveToInsertRow(); 
    rs.updateString(1, "new value col1"); 
    rs.updateString(2, "new value col2"); 
    rs.updateString(3, "new value col3"); 
    rs.insertRow(); 
} 

這將在結果集中插入行,但實際執行情況可能只是產生一個INSERT語句來實現這一目標。同樣,這種方式效率不高(特別是如果表格有大量行),並且如果我們沒有選擇(或更新)具有約束條件的列(例如NOT NULLCHECK約束條件),它可能會失敗。

還有一些構建在JDBC之上的框架允許您創建和操作數據,而無需自己編寫查詢,但最終很可能會生成INSERT查詢。

因此:從您的角度來看,肯定可以將數據插入到數據庫中,但最終用於執行此操作的工具可能會以某種形式使用INSERT語句。

+0

可以使用CallableStatement以任何方式執行所需的操作? –

+0

@VishalChugh不是,它用於執行存儲過程。因此,如果你有一個爲你插入的存儲過程,那麼是的,但這仍然是一種'欺騙'的形式(因爲存儲過程本身將包含插入語句)。 –

相關問題