gpt4 book ai didi

java - 无法在小程序中使用 ucanaccess 方法连接或插入数据库

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:03 25 4
gpt4 key购买 nike

使用 jdbc:ucanaccess 方法将一个小程序连接到 Access DB 时,出现以下错误:

Firstdb.java:44: error: unreported exception SQLException; 
must be caught or declared to be thrown
stmt.executeUpdate(sql);
^

我在小程序中使用的代码如下(add()setBounds()init()中移除) :

public class Firstdb extends Applet implements ActionListener {
TextField t1, t2;
Label l1;
Button b1, b2;
Connection con;
Statement stmt;

public void init() {
try {
con = DriverManager.getConnection("jdbc:ucanaccess://H:/test/db.mdb");
stmt = con.createStatement();
} catch (Exception e) {
}
}

public void actionPerformed(ActionEvent ae) {
String sql;

if (ae.getSource() == b1) {
sql = "insert into user (Uname) values(" + t1.getText() + ")";
stmt.executeUpdate(sql);
} else if (ae.getSource() == b2) {
//do something
}
}
}

注:java版本“1.8.0_141”

为什么会出现此错误?

最佳答案

您的代码有两个致命缺陷:

  1. value 不是有效的 SQL 关键字。它应该是 values[在问题的后续编辑中修复。]
  2. 您的动态 SQL 正在生成语法无效的命令文本(未加引号的字符串文字)。

此外,user 是一个保留字(函数名),因此如果您需要将它用作表名,您确实应该将它括在方括号中。

上述问题 #2 的正确解决方案是使用参数化查询,例如,

sql = "insert into [user] ([Uname]) values (?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, t1.getText());
ps.executeUpdate();

关于java - 无法在小程序中使用 ucanaccess 方法连接或插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268173/

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