gpt4 book ai didi

java - CREATE TABLE 语句在executeBatch 下默默失败

转载 作者:行者123 更新时间:2023-11-30 07:38:52 26 4
gpt4 key购买 nike

这是我的代码部分。当我执行sql语句时,创建表并没有在数据库中创建任何表,并且没有抛出任何错误。这是为什么?

我将 NetBeans 与 JDK SE 8 和 MS-Access 结合使用。

String sql1="Insert into Signup_Login (UserName,DOB,EmailId,Password) values ('"+name.getText()+"','"+dob.getText()+"','"+emailId.getText()+"','"+pass.getText()+"')";
String sql2="create table "+emailId.getText()+"Inbox(InMsgs varchar(1000), primary key(InMsgs))";
String sql3="create table "+emailId.getText()+"Outbox(OutMsgs varchar(1000), primary key(OutMsgs))";

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
con=DriverManager.getConnection("jdbc:ucanaccess://C:/Users/LENOVO/Documents/Email.accdb");
st=con.createStatement();
st.addBatch(sql1);
st.addBatch(sql2);
st.addBatch(sql3);
st.executeBatch();

最佳答案

使用 UCanAccess 3.0.3.1 我能够通过尝试使用 addBatch()/executeBatch() 运行 CREATE TABLE 语句来重现您的问题。但是,如果每个都使用 executeUpdate() 独立运行,那么它们似乎可以正常工作。

此外,由于 VARCHAR 列的宽度超过 255 个字符,您的 CREATE TABLE 语句实际上将创建以“备注”(也称为“长文本”)字段作为主键的表。 Access UI 中不允许创建此类表,因此可能应视为“不推荐”。相反,使用类似这样的方法来创建带有自动编号主键的表:

String sql2="CREATE TABLE ["+emailId.getText()+"Inbox] (id COUNTER PRIMARY KEY, InMsgs MEMO)";

(...暂时忽略为每个 emailId 创建单独的相同表的事实几乎肯定是一个坏主意。)

关于java - CREATE TABLE 语句在executeBatch 下默默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34972903/

26 4 0