UCAExc:::3.0.7 意外标记:logDate
UCAExc:::3.0.7 unexpected token: logDate
大家好。我正在做一个需要与 ms access 2016 db 交互的个人项目。我的 java 应用程序从用户那里获取数据,并且此信息存储在 Object[] 中。我正在尝试将我的 obj 数组的元素插入到我的数据库中的 table 中。这是我的代码:
Connection conn = null;
PreparedStatement pstmnt = null;
String sql = null;
ResultSetMetaData md = null;
Statement stm = null;
ResultSet rs = null;
int i = 0;
String q = "SELECT * from QueryData";
try{
conn = DriverManager.getConnection("jdbc:ucanaccess://filePath");
stm = conn.createStatement();
rs = stm.executeQuery(q);
md = rs.getMetaData();
int count = md.getColumnCount();
String[] colName = new String[count];
for (int n = 1; n <= count; n++)
colName[n-1] = md.getColumnLabel(n);
while ( i <= data.length) {//data being the object array containing the data to be inserted in db
query = "INSERT into QueryData ('"+colName[i]+"') VALUES ('"+data[i]+"')";
//The following code is where I get the exception
pstmnt = conn.prepareStatement(query);
//some more code follows..
在第一次通过 while 循环时,colName[i] 是 "logDate",这是 table 中的第一个字段,data[i] 是一个格式为 2016-12 的 LocalDate 对象-23。我知道我没有关闭上面的 while 循环,也没有给出 catch 子句,但我的程序没有 运行 超过 pstmnt 赋值。我一直收到异常 "net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 unexpected token: logDate"。
任何帮助将不胜感激,因为我已经在网上和这个论坛上进行了搜索,但找不到解决我问题的有效方法。
您用引号将列名称括起来,这是不允许的。您可以改用方括号(尽管并非真正必要,除非您在字段名称中有空格,而 Access 允许这样做)。
query = "INSERT into QueryData (["+colName[i]+"]) VALUES ('"+data[i]+"')";
您可能还需要使用#
而不是'
来分隔日期值。 Access 过去使用 #
作为日期分隔符,我不确定更新的版本是否接受 '
:
query = "INSERT into QueryData (["+colName[i]+"]) VALUES (#"+data[i]+"#)";
大家好。我正在做一个需要与 ms access 2016 db 交互的个人项目。我的 java 应用程序从用户那里获取数据,并且此信息存储在 Object[] 中。我正在尝试将我的 obj 数组的元素插入到我的数据库中的 table 中。这是我的代码:
Connection conn = null;
PreparedStatement pstmnt = null;
String sql = null;
ResultSetMetaData md = null;
Statement stm = null;
ResultSet rs = null;
int i = 0;
String q = "SELECT * from QueryData";
try{
conn = DriverManager.getConnection("jdbc:ucanaccess://filePath");
stm = conn.createStatement();
rs = stm.executeQuery(q);
md = rs.getMetaData();
int count = md.getColumnCount();
String[] colName = new String[count];
for (int n = 1; n <= count; n++)
colName[n-1] = md.getColumnLabel(n);
while ( i <= data.length) {//data being the object array containing the data to be inserted in db
query = "INSERT into QueryData ('"+colName[i]+"') VALUES ('"+data[i]+"')";
//The following code is where I get the exception
pstmnt = conn.prepareStatement(query);
//some more code follows..
在第一次通过 while 循环时,colName[i] 是 "logDate",这是 table 中的第一个字段,data[i] 是一个格式为 2016-12 的 LocalDate 对象-23。我知道我没有关闭上面的 while 循环,也没有给出 catch 子句,但我的程序没有 运行 超过 pstmnt 赋值。我一直收到异常 "net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 unexpected token: logDate"。
任何帮助将不胜感激,因为我已经在网上和这个论坛上进行了搜索,但找不到解决我问题的有效方法。
您用引号将列名称括起来,这是不允许的。您可以改用方括号(尽管并非真正必要,除非您在字段名称中有空格,而 Access 允许这样做)。
query = "INSERT into QueryData (["+colName[i]+"]) VALUES ('"+data[i]+"')";
您可能还需要使用#
而不是'
来分隔日期值。 Access 过去使用 #
作为日期分隔符,我不确定更新的版本是否接受 '
:
query = "INSERT into QueryData (["+colName[i]+"]) VALUES (#"+data[i]+"#)";