SQLITE JDB C не вставляет, не выбирает данные с помощью SELECT - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь в качестве примера использовать 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»: синтаксическая ошибка) ЗАПИСИ: {}

...