当前位置: 首页 > 面试题库 >

在JDBC中,如何知道DDL语句是否成功执行?

闻人德庸
2023-03-14
问题内容

我正在尝试使用JDBC在Oracle 11g数据库上执行DDL语句。我现在用的是这样做boolean execute(String SQL)的的Statement类。

以下是执行查询并尝试确定查询结果的代码段:

// Create a SQL string
String dropSql = "DROP TABLE Reviews";

stmt = conn.createStatement();

// Execute the query
boolean result = stmt.execute(dropSql);

// Get the result of the drop operation
if(result)
{
    // Its a result set
    System.out.println("Atleast one result set has been returned. Loop through them");
}
else
{
    // Its an update count or no result
    Integer updateCnt = stmt.getUpdateCount();

    if(updateCnt == -1)
    {
        // No results
        System.out.println("No results returned by the query");
    }
    else
    {
        // Update Count 
        System.out.println("Update Count: " + updateCnt);
    }
}

我不是数据库专家,但是是否存在DDL语句执行失败且不引发的情况SQLException?如果没有,则无需捕获execute方法返回的内容。缺少SQLException表示DDL语句成功执行。

我正在关注的教程建议对DDL语句使用此方法:

boolean execute(String SQL) : ....... Use this method to execute SQL DDL statements or when you need to use truly dynamic SQL.

尽管Jdbc文档建议使用int executeUpdate(String sql)来执行DDL语句。两者中哪一个更可取?


问题答案:

SQLException无论使用哪种方法执行失败的语句,都会始终引发错误。executeUpdate适用于任何不能产生的语句ResultSet,这使其非常适合DDL语句。



 类似资料:
  • 问题内容: 即使文件在远程http服务器上不存在,它也会以静默方式返回,它只是将html页面保存到命名文件中。例如: 即使abc.jpg在google.com服务器上不存在,它只是默默返回,生成的不是有效的jpg文件,它实际上是html页面。我猜返回的标头(一个httplib.HTTPMessage实例)可以用来实际上告诉检索是否成功,但是我找不到的任何文档。 有人可以提供有关此问题的一些信息吗?

  • handler_name:SoundHandle\n输出#0,mp3,to'/tmp/voice00045.mp3':\n元数据:\n major_brand:3gp4\n minor_version:0\n compatible_brands:isom3gp4\n TSSE:lavf56.40.101\n Stream#0:0(eng):audio:mp3(libmp3lame),44100 H

  • 我真的需要帮助,我在stackoverflow上找到的所有问题中都搜索到了,但没有任何效果。我以前从未使用过hibernate,我不知道自己做错了什么 这是我的存储库:https://github.com/ionutincau/test_db 我收到了这个错误:

  • 我现在正在阅读日志,试图理解为什么两台设备无法通过蓝牙连接。有没有办法通过读取logcat来知道这两个设备是否成功配对?我没有带设备,只是通过阅读日志来了解情况。 也许我应该寻找。这些状态在某处有定义吗?

  • 我在使用以下方言创建表时遇到以下错误 “org.hibernate.dialoget.mysqlinoddDialogic”

  • 问题内容: 我正在使用PDO插入记录(mysql和php) 有没有办法知道它是否成功插入,例如,是否由于重复而没有插入记录? 编辑:当然,我可以查看数据库,但是我的意思是程序反馈。 问题答案: 成功返回true。还有,你可以检查错误。