Я пытаюсь в качестве примера использовать SQLITE JDB C (org.xerial.sqlite-jdb c версия 3.30.1) для простой вставки в базу данных и отображения вставленной строки. Я перепробовал все возможные методы, даже используя стандартный код, указанный в SQLITE Java, но он не вставляет и не извлекает строки из БД.
Попросите кого-нибудь указать мне правильное направление. Спасибо.
import com.ncsp.server.db.CreateDDL;
import com.ncsp.server.db.DBConnect;
import com.ncsp.server.model.audit.AuditType;
import java.io.IOException;
import java.sql.*;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.*;
public class DBUtil {
public Connection connect() {
Connection conn = null;
String url = "jdbc:sqlite:/Users/rv037030/.ncsp-server/ncsp-server.sqlite.db";
try {
// create a connection to the database
conn = DriverManager.getConnection(url);
System.out.println("Connection to SQLite has been established. JDBC URL: " + url);
} catch (SQLException e) {
System.out.println("DRIVEr MANAGER ERROR. URL " + url);
e.printStackTrace();
}
return conn;
}
public void fetchAudit() {
Map<Integer, Map<String, String>> retVal = new LinkedHashMap<>();
// Insert Statement.
String insert = "insert into ncsp_audit_events (component, created, details, event_type, jobId, user) " +
"values ('TEST1',"
+ Timestamp.from(Instant.now())
+ ", 'Sample Details', 'EVENT_TYPE',"
+ System.currentTimeMillis()
+", 'USER')";
System.out.println("Insert QUERY: " + insert);
// Select Statement.
String select = "select t.event_type from ncsp_audit_events t";
System.out.println("Select query: " + select);
try (Connection conn = connect();
Statement stmt = conn.createStatement()) {
boolean inserted = stmt.execute(insert);
System.out.println("Inserted: " + inserted);
ResultSet rs = stmt.executeQuery(select);
// loop through the result set
while (rs.next()) {
Map<String, String> output = new LinkedHashMap<>();
output.put("event_type", rs.getString("event_type"));
output.put("component", rs.getString("component"));
output.put("jobId", String.valueOf(rs.getLong("jobId")));
output.put("details", rs.getString("details"));
output.put("user", rs.getString("user"));
output.put("created", String.valueOf(rs.getTimestamp("created")));
System.out.println("OUTPUT: " + output);
retVal.put(1, output);
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
System.out.println("RECORDS: "+ retVal);
}
public static void main(String[] args) {
DBUtil util = new DBUtil();
util.fetchAudit();
}
}
Это вывод, когда я запускаю программу:
Вставить QUERY: вставить в ncsp_audit_events (компонент, создан, детали, event_type, jobId,> пользователь ) значения ('TEST1', 2020-02-06 14: 30: 56.021758, 'Sample Details', 'EVENT_TYPE', 1581028256029,> 'USER') Выбор запроса: выберите t.event_type из ncsp_audit_events t Соединение с SQLite установлено , JDB C URL: jdb c: sqlite: /Users/rv037030/.ncsp-> server / ncsp-server.sqlite.db [SQLITE_ERROR] SQL ошибка или отсутствует база данных (рядом с «14»: синтаксическая ошибка) ЗАПИСИ: {}