gpt4 book ai didi

java - Java 中不存在捕获表

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:28 24 4
gpt4 key购买 nike

我需要向表中插入一些数据。当程序执行插入时,可能会出现错误,因为我还没有创建表。我想在 catch block 中创建该表并返回到 try block 。因此,每当表被删除或恰好被删除时,try catch 将构建表。

我已经为它写了一些代码,但是它失败了。

import java.sql.*;

/**
*
* @author JOJO
*/
public class ConnectDB {
static Connection conn;
static String driver = "org.apache.derby.jdbc.ClientDriver";
static String connectionURL = "jdbc:derby://localhost:1527/Libraryprj;user=scott;password=tiger";

public void AddBookDB(String bookName) throws SQLException {

String createString = "CREATE TABLE BOOKLEDGER (BOOKNAME VARCHAR(50) NOT NULL)";
try {
Class.forName(driver);
} catch (java.lang.ClassNotFoundException e) {
e.printStackTrace();
}
try
{
conn = DriverManager.getConnection(connectionURL);
Statement stmt = conn.createStatement();
boolean execute = stmt.execute("insert into BOOKLEDGER values ('" + bookName + "')");
stmt.close();
}
catch (SQLException sqlExcept)
{
Statement stmt = (Statement) conn.createStatement();
stmt.executeUpdate(createString);

sqlExcept.printStackTrace();
}
}
}

最佳答案

从我的角度来看,最好以另一种方式进行(使用控制结构而不是 try-catch),因此您可以在表以这种方式存在之前进行测试:

DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "table_name", null);
if (!rs.next()) {
//Table not Exist, let's create it
}
//Insert data into the table ...

在类似情况下使用 try-catch 是一种不好的做法,try catch 结构应该只用于捕获异常情况,而不是代替控制结构......

关于java - Java 中不存在捕获表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com