2014-06-17 68 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不是,它用于执行存储过程。因此,如果你有一个为你插入的存储过程,那么是的,但这仍然是一种'欺骗'的形式(因为存储过程本身将包含插入语句)。 –

相关问题