Код:
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
Что я не так понимаю?
Вы в методе 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.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости