Как мне подключить мой sqlite db к моему java swing GUI? - PullRequest
0 голосов
/ 04 апреля 2019

У меня проблема с поиском способа объединить базу данных sqlite с моим графическим интерфейсом java swing, используя im 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');";

  }

}

1 Ответ

0 голосов
/ 04 апреля 2019
private static Connection conn = null; 

Ваше соединение пусто.

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

return null;

Вы открываете, но закрываете соединение немедленно, а затем возвращаете пустое значение.

Как вы ожидаете использовать объект, если значение объекта равно нулю?В этом нет ничего особенного в подключении к базе данных, это базовая Java.

База данных похожа на файл, вы открываете файл, читаете данные из файла и затем закрываете файл.

Таким образом, для базы данных вы получаете соединение с базой данных, выполняете команды SQL для базы данных и затем закрываете соединение с базой данных.

Начните с прочтения учебного руководства по Java на Основы JDBC для базового уровня.информация и примеры.

...