[英]How do i connect my sqlite db to my java swing GUI?
我有一個問題,找到一種方法將我的sqlite數據庫與我的java swing GUI結合使用,我使用Sublime Text 3。
這是一個學校項目,我們正在嘗試使用我們可以編輯的sqlite數據庫在預約時間創建一個數據庫,已經嘗試了很多不同的方式來連接它們,但我剛接觸java swing,因此有麻煩。
這是我們的GUI
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Timeliste extends JFrame implements ActionListener {
JButton leggtil, slett, endre;
JTextField time;
JTextArea Oversikt;
JLabel avtaler;
static JTable data;
private Statement stmt;
private ResultSet rs;
public static void main(String[] args) throws Exception {
Timeliste vindu = new Timeliste();
vindu.setTitle("Time registrering");
vindu.setDefaultCloseOperation(EXIT_ON_CLOSE);
vindu.setSize(260,170);
vindu.setResizable(false);
vindu.setLocationRelativeTo(null);
vindu.opprettGUI();
vindu.pack();
vindu.setVisible(true);
getConnection();
}
public static Connection getConnection() throws Exception {
Connection conn = DriverManager.getConnection("jdbc:sqlite:avtaler.db");
conn.close();
System.out.println("Vellykket oppkobling til databasen!");
return null;
}
public void opprettGUI() {
setLayout( new FlowLayout());
add( new JLabel("Registrer timer her!") );
leggtil = new JButton("Legg til");
add(leggtil);
slett = new JButton("Slett");
add(slett);
endre = new JButton("Endre");
add(endre);
time = new JTextField(8);
add(time);
setTitle("Avtale registrering");
setMinimumSize(new Dimension(200,300));
add( new JTable(10, 5));
}
public void actionPerformed(ActionEvent e){
}
}
這是我們的sqlite數據庫
import static javax.swing.JOptionPane.*;
import java.sql.*;
public class Avtaler {
private static String url = "jdbc:sqlite:avtaler.db";
private static Connection conn = null;
public static void main(String[] args) {
String utTxt = "";
kobleOpp(); // Kontakter databasen
try {
Statement stmt = conn.createStatement();
// Opprette databasen gjøres først!
String sql = sqlNyDB(); // Spørring def i hjelpemetode
stmt.executeUpdate(sql);
utTxt = "Databasen er opprettet - ok!" + "\n";
// Lister ut alle personer i databasen
// String sql = "select * from Person;";
sql = "select * from Avtale order by Dato;";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int nr = rs.getInt("Nr");
String dato = rs.getString("Dato");
String sted = rs.getString("Sted");
String beskrivelse = rs.getString("Beskrivelse");
utTxt += nr + ", " + dato+ " (" + sted + ") - " + beskrivelse + "\n";
}
}
catch (Exception e) {
utTxt = "Databasespørring feilet!";
}
showMessageDialog(null, utTxt);
kobleNed();
}
// Kobler opp til databasen.
private static void kobleOpp() {
try {
conn = DriverManager.getConnection(url);
}
catch (SQLException e) {
System.out.println( "Oppkobling til databasen " + url + " feilet." + "\n" + e.toString() );
}
}
// Lukker forbindelsen til databasen.
private static void kobleNed() {
try {
conn.close();
}
catch (SQLException e) { }
}
private static String sqlNyDB() {
return "drop table if exists Avtale; create table Avtale(Nr integer primary key, Dato varchar(50), Sted varchar(50), Beskrivelse varchar(50) );"
+ "insert into Avtale values ( 1, '2019-09-09 09:00:00', 'Oslo', 'Gruppearbeid');"
+ "insert into Avtale values ( 2, '2019-07-07 07:00:00', 'Fredrikstad', 'Signere kontrakt');"
+ "insert into Avtale values ( 3, '2019-12-05 11:30:00', 'Bø', 'Pub med gutta');"
+ "insert into Avtale values ( 4, '2019-06-09 07:45:00', 'Oslo', 'Gruppearbeid');"
+ "insert into Avtale values ( 5, '2019-08-11 12:00:00', 'Bergen', 'Basketball trening');";
}
}
private static Connection conn = null;
您的連接為空。
Connection conn = DriverManager.getConnection("jdbc:sqlite:avtaler.db");
conn.close();
System.out.println("Vellykket oppkobling til databasen!");
return null;
您打開但立即關閉Connection然后返回null。
如果對象值為null,您期望如何使用Object? 這對於連接數據庫沒有什么特別之處,這是基本的Java。
數據庫就像一個文件,您打開文件,從文件中讀取數據,然后關閉文件。
因此,對於數據庫,您將獲得與數據庫的連接,在數據庫上執行SQL命令,然后關閉與數據庫的連接。
首先閱讀JDBC基礎知識 Java教程,獲取基本信息和示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.