Имеется код следующего вида:
import java.sql.*;
public class conn {
public static Connection conn;
public static Statement statmt;
public static ResultSet resSet;
// --------ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ--------
public static void Conn() throws ClassNotFoundException, SQLException {
conn = null;
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:TEST1.sdb");
System.out.println("База Подключена!");
}
// --------Создание таблицы--------
public static void CreateDB() throws ClassNotFoundException, SQLException {
statmt = conn.createStatement();
statmt.execute("CREATE TABLE if not exists 'users' ('id' INTEGER PRIMARY KEY AUTOINCREMENT, 'name' text, 'phone' INT);");
System.out.println("Таблица создана или уже существует.");
}
// --------Заполнение таблицы--------
public static void WriteDB() throws SQLException {
statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Petya', 125453); ");
statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Vasya', 321789); ");
statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Masha', 456123); ");
System.out.println("Таблица заполнена");
}
// -------- Вывод таблицы--------
public static void ReadDB() throws ClassNotFoundException, SQLException {
resSet = statmt.executeQuery("SELECT * FROM users");
while(resSet.next()) {
int id = resSet.getInt("id");
String name = resSet.getString("name");
String phone = resSet.getString("phone");
System.out.println( "ID = " + id );
System.out.println( "name = " + name );
System.out.println( "phone = " + phone );
System.out.println();
}
System.out.println("Таблица выведена");
}
// --------Закрытие--------
public static void CloseDB() throws ClassNotFoundException, SQLException {
conn.close();
statmt.close();
resSet.close();
System.out.println("Соединения закрыты");
}
}
Также имеется class с главным методом:
import java.sql.SQLException;
public class db {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
conn.Conn();
conn.CreateDB();
conn.WriteDB();
conn.ReadDB();
conn.CloseDB();
}
}
Но почему-то при вызове метода Conn в 12 строке вылетает ошибка:
Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at conn.Conn(conn.java:12)
at db.main(db.java:6)
В чём может быть причина? быть может не в той версии коннектора я использую версию sqllite-jdbc-3.7.2.jar и если так, то какую версию посоветуете? Кто-то вообще сталкивался с этой проблемой? Помогите пожалуйста я уже больше полгода не могу подключить базу к проекту. Хочется уже закрыть этот вопрос, а спросить не у кого.
//
// IntelliJ IDEA Community 2019.2, jdk-12.0.1
// File\Project Structure\Libraries\Classes - сюда добавить путь
// к sqlite-jdc-xxx.jar
//
// Main.java :
package com.samsoft;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
myclass.Conn();
myclass.CreateTab();
myclass.WriteTab();
myclass.ReadTab();
myclass.CloseDB();
}
}
// myclass.java :
package com.samsoft;
import java.sql.*;
public class myclass {
public static Connection conn;
public static Statement st;
public static ResultSet rs;
//-------- Для подключения использован драйвер sqlite-jdbc-3.27.2.1.jar -------
public static void Conn() throws ClassNotFoundException, SQLException {
conn = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:test1.db");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(1);
}
System.out.println("Соединение с базой установлено.");
}
//-------- Создание таблицы --------
public static void CreateTab() throws ClassNotFoundException, SQLException {
try {
st = conn.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS users" +
"(id INT PRIMARY KEY NOT NULL," +
"name TEXT NOT NULL," +
"phone TEXT NOT NULL)";
st.executeUpdate(sql);
st.close();
} catch (Exception e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage());
System.exit(2);
}
System.out.println("Таблица создана (или уже существует).");
}
//-------- Заполнение таблицы --------
public static void WriteTab() throws SQLException {
try {
conn.setAutoCommit(false);
st = conn.createStatement();
String sql = "INSERT INTO users (id, name, phone) VALUES (1, 'Petya', 125453);";
st.executeUpdate(sql);
sql = "INSERT INTO users (id, name, phone) VALUES (2, 'Vasya', 321789);";
st.executeUpdate(sql);
sql = "INSERT INTO users (id, name, phone) VALUES (3, 'Masha', 456123);";
st.executeUpdate(sql);
st.close();
conn.commit();
} catch (Exception e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage());
System.exit(3);
}
System.out.println("Записи добавлены в таблицу.");
}
//-------- Чтение и печать таблицы --------
public static void ReadTab() throws ClassNotFoundException, SQLException {
try {
conn.setAutoCommit(false);
st = conn.createStatement();
rs = st.executeQuery("SELECT * FROM users;");
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String phone = rs.getString("phone");
System.out.println("id = " + id);
System.out.println("name = " + name);
System.out.println("phone = " + phone);
System.out.println();
}
rs.close();
st.close();
} catch (Exception e) {
System .err.println( e.getClass().getName() + ": " + e.getMessage() );
System .exit(4);
}
System .out.println("Чтение выполнено.");
}
// -------- Закрытие --------
public static void CloseDB() throws ClassNotFoundException, SQLException {
conn.close();
System.out.println("Соединение завершено.");
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Почему в методе main в языке C в роле аргументов принимаются argc и argv, а в Java - args? Как расшифровывается эта короткая форма или почему она именно...
Есть таблица на 30 и более полейЯ хочу разделить данную таблицу на несколько классов и в каждом классе по 5 полей, чтобы удобней было работать
Я Java изучаю только месяц и никак не могу понять, как правильно отправить audio, файл кодируется в base64 не верно и файл на сервере не открываетсяКак...