2016-12-23 6 views
0

Добрый день, все. Я работаю над личным проектом, который должен взаимодействовать с мб-доступом 2016 дБ. Приложение java получает данные от пользователя, и эта информация хранится в объекте []. Я пытаюсь вставить элементы моего массива obj в таблицу в моем db. Это мой код:UCAExc ::: 3.0.7 неожиданный токен: logDate

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.. 

На первом проходе Повсеместно цикл в то время, ColName [I] является «logDate», который является первым полем в таблице данных и [I] является объектом LocalDate в формате 2016- 12-23. Я знаю, что я не закрыл цикл while выше и не дал предложение catch, но моя программа не запускается после назначения pstmnt. Я получаю исключение «net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc ::: 3.0.7 неожиданный токен: logDate».

Любая помощь будет принята с благодарностью, поскольку я просмотрел веб-сайт этого форума, но не нашел рабочего решения для своей проблемы.

ответ

2

Вы окружаете свое имя столбца кавычками, что недопустимо. Вместо этого вы можете использовать квадратные скобки (хотя и не обязательно, если у вас нет пробелов в именах полей, которые разрешает доступ).

query = "INSERT into QueryData (["+colName[i]+"]) VALUES ('"+data[i]+"')"; 

Вы мощь также нужно использовать # вместо ' разграничить значение даты. Доступ используется для использования # для разделителей дат, и я не уверен, если последние версии принимают ':

query = "INSERT into QueryData (["+colName[i]+"]) VALUES (#"+data[i]+"#)"; 
+0

Высокую оценку Филлипа. Это решило мою проблему. Я чрезвычайно новичок в программировании и в базах данных. – user3452354