резюме (после выполнения инструкции SQL INSERT INTO данные недоступны для просмотра в таблице MS Access без закрытия и повторного открытия базы данных)
Что это такое: Простой класс Java, использующий Ucanaccess diver для вставки строк в существующую таблицу в файле базы данных MS Access.
Чтобы создать условие: Откройте файл базы данных MS Access. Создайте и сохраните таблицу с четырьмя столбцами. Назовите таблицу «TestExportRows». В дополнение к приведенному ниже коду вам потребуется добавить в приложение Java пользовательский графический интерфейс с кнопкой, которая запускает метод. Запустите java-приложение, нажмите кнопку, которая запускает оператор SQL в «методе public void testExportSingleRow()». Откройте таблицу в базе данных MS Access. Записей не видно. Закройте и снова откройте базу данных MS Access и откройте таблицу. Теперь записи видны. Кроме того, невозможно сжать и восстановить базу данных, пока приложение Java не будет закрыто.
Я долго и упорно искал ответ на этот вопрос. Я также потратил много времени на устранение возможных причин. Я считаю, что правильно закрываю соединение и заявление. Мне нужно, чтобы эта работа работала без необходимости повторного открытия базы данных MS Access или закрытия приложения Java.
Вот код:
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author petehahn
*/
public class Trash {
public void testExportSingleRow() {
try {
File dir1 = new File("..");
String path1;
path1 = dir1.getCanonicalPath();
String pathTarget = path1 + "\\" + "Playground.accdb";
File dbTargetFile = new File(pathTarget);
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String url = "jdbc:ucanaccess://" +dbTargetFile +";showschema=true";
Connection dbConnection = DriverManager.getConnection(url);
String sqlString = "INSERT INTO TestExportRows(Item,Category,Aluminum,Copper) "
+"VALUES ('Column 1','Column 2','Column 3','Column 4')";
Statement sqlInsertStatement = dbConnection.createStatement();
sqlInsertStatement.executeUpdate(sqlString);
dbConnection.commit();
dbTargetFile = null;
sqlInsertStatement.close();
dbConnection.close();
} catch (IOException | ClassNotFoundException | SQLException ex) {
Logger.getLogger(DbTestExportToAccess.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
NetBeans 8.0.2 64-разрядная версия MS Access 2013 32-разрядная Windows 8.1 64-разрядная версия ucanaccess 2.0.9.3