UCanAccess:从空间
我想数字/文本插入表中意外的标记,但是当程序试图插入文本,我得到的错误net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.2 unexpected token: EX1 required:)
UCanAccess:从空间
这里是我的相关代码:
try (Connection conn = DriverManager.getConnection(
"jdbc:ucanaccess://" + dbPath
+ ";newdatabaseversion=V2010"
)) {
DatabaseMetaData dmd = conn.getMetaData();
try (ResultSet rs = dmd.getTables(null, null, tableName, new String[] { "TABLE" })) {
try (Statement s = conn.createStatement()) {
ResultSet resultSet;
String tableName = "Database";
s.executeUpdate("CREATE TABLE " + tableName +" ([SUBJID]
INTEGER, [PARAMCD] TEXT, [PARAM] TEXT, [AVAL] DOUBLE)");
String s1="Text Ex1";
String s2="Text Ex2";
int a=3;
double b=2;
resultSet = s.executeQuery("SELECT * FROM " + tableName);
s.executeUpdate("INSERT INTO " + tableName
+ " (SUBJID, PARAMCD, PARAM, AVAL)"
+ " VALUES ("+ a+", " + s1 + ", " + s2 +" , " + b +")");
它看起来是空白出现时引起的错误。我尝试将s1更改为“TextEx1”,将s2更改为“TextEx2”,这给了我net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.2 user lacks privilege or object not found: TEXTEX1
的错误。
在此先感谢任何人可以提供的帮助。
你想要做这样的事情:
String sql = "INSERT INTO [" + tableName + "] (SUBJID, PARAMCD, PARAM, AVAL) VALUES (?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, a);
ps.setString(2, s1);
ps.setString(3, s2);
ps.setDouble(4, b);
ps.executeUpdate();
谢谢Gord,这个工作很完美。如果我想更新而不是插入,我该怎么办?我尝试用“UPDATE”替换“INSERT INTO”,但是这给了我一个错误“net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 4.0.2意外标记:(需要:SET”。 – Evan
UPDATE语法是有点不同,例如'UPDATE [Database] SET PARAMCD = ?, PARAM =?WHERE SUBJID =?' –
我用String sql ='“UPDATE [”+ tableName +“] SET SUBJID = ?, PARAMCD = ?, PARAMCD =?WHERE AVAL =?“;',其中大部分工作 - 但是,当我在多行中找到”AVAL“值时遇到了问题,因为当我只想更新最新的。我尝试将其更改为'String sql =“UPDATE [”+ tableName +“] SET SUBJID = ?, PARAMCD = ?, PARAM =?,AVAL =?WHERE PARAMCD =?AND SUBJID =?”;错误的'net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 4.0.2参数没有设置。有没有什么办法可以添加多个参数或什么? – Evan
呼叫表'Database'是不是最好的主意。加上'Text Ex1',你需要适当的引用或参数绑定(它会更安全)。 – lad2025
正确的引用是什么意思? – Evan
只需打印“INSERT INTO”+ tableName +“(SUBJID,PARAMCD,PARAM,AVAL)” +“VALUES(”+ a +“,”+ s1 +“,”+ s2 +“,”+ b +“ )“' – lad2025