Подключение к SQLite

183
23 августа 2018, 05:10

Код:

package sqlite;
import java.sql.*;
import java.util.Scanner;
public class Programm{
    public static void main (String [] args) {
        Programm bd = new Programm();
        bd.open();
        bd.create();
        bd.insert();
        bd.close();
    }
    Connection co;
    void open() {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection co = DriverManager.getConnection("jdbc:sqlite:track.db");
            System.out.println("Connected");
        }catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
    void create() {
        try {
        Statement statement = co.createStatement();
        String query = 
                "CREATE TABLE if not exists 'track_data' ( "+
                        "TIME_IN_MS DOUBLE PRECISION, " +
                        "EKG1 DOUBLE PRECISION); ";
        statement.execute(query);
        System.out.println("Таблица создана или уже существует.");
        }catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
    void insert() {
        try {
        Scanner sc = new Scanner(System.in);
        double time = 2;
        double ekg_1 = 3;
        String query = "INSERT INTO tracks (TIME_IN_MS, EKG1) " +
                "VALUES ('" + time +"','"+ ekg_1+"')";
        Statement statement = co.createStatement();
        statement.executeUpdate(query);
        System.out.println("Rows added");
        }catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
    void close() {
        try {
            co.close();
        }catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

Результат:

Connected null null null

Что я не так понимаю?

Answer 1

Вы в методе open перекрываете поле класса локальной переменной, поэтому остальные методы не могут получить доступ к базе. Чтобы исправить это, достаточно убрать объявление типа из левой части выражения присваивания:

void open() {
    try {
        Class.forName("org.sqlite.JDBC");
        co = DriverManager.getConnection("jdbc:sqlite:track.db");
        System.out.println("Connected");
    }catch(Exception e) {
        System.out.println(e.getMessage());
    }
}

А ещё у вас в одном методе таблица называется track_data, а в другом tracks.

READ ALSO
Экранирование в POST запросе

Экранирование в POST запросе

У меня есть REST-сервис:

208
Оптимизация кода (алгоритм Крускала)

Оптимизация кода (алгоритм Крускала)

Задание - реализация алгоритма Крускала для вычисления минимальной суммарной длины дорожек в парке аттракционовЛимит времени - 5 секунд

218
Регулярное выражение [a-z]+

Регулярное выражение [a-z]+

Почему регулярка [a-z]+ в Idea не ищет букву из диапазона a-z, в то время как на https://regexrru/ нормально находит?

189
Мой Box2D Body падает на немного при создании box2d libgdx

Мой Box2D Body падает на немного при создании box2d libgdx

Я создаю для практики игру арканоидУ меня есть родительский абстрактный класс GameObject для каждого спрайта в игре(Bat, Brick, Ball):

244