【问题标题】:How do i connect my sqlite db to my java swing GUI?如何将我的 sqlite db 连接到我的 java swing GUI?
【发布时间】:2019-08-26 00:37:31
【问题描述】:

我在寻找一种方法将我的 sqlite 数据库与我的 java swing GUI 结合起来时遇到问题,我使用的是 Sublime Text 3。

这是一个学校项目,我们试图在预约时间使用我们可以编辑的 sqlite 数据库创建一个数据库,一直在尝试很多不同的方法来连接它们,但我是 java swing 新手,所以有点麻烦。

这是我们的图形用户界面

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');";

  }

}

【问题讨论】:

    标签: java swing sqlite user-interface


    【解决方案1】:
    private static Connection conn = null; 
    

    您的连接为空。

    Connection conn = DriverManager.getConnection("jdbc:sqlite:avtaler.db"); 
    conn.close();       
    System.out.println("Vellykket oppkobling til databasen!"); 
    
    return null;
    

    您立即打开但关闭连接,然后返回 null。

    如果对象值为空,您希望如何使用对象?连接数据库没什么特别的,这是基本的 Java。

    数据库就像一个文件,你打开文件,从文件中读取数据,然后关闭文件。

    所以对于一个数据库,你获得一个到数据库的连接,在数据库上执行 SQL 命令然后关闭到数据库的连接。

    首先阅读JDBC Basics 上的 Java 教程,了解基本信息和示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 2023-03-04
      • 2020-12-22
      相关资源
      最近更新 更多