簡體   English   中英

如何在不執行連接類中的方法的情況下使用preparestatement

[英]how to use preparestatement without implementing a method in my connection class

我試圖用數據庫中的數據填充Java中的jtable。 我有一個連接類,我可以連接到服務器,但是當我嘗試使用prepareStatement時,蝕告訴我在我的連接類中添加強制轉換或創建prepareStatement方法...在我的代碼下方

連接類別

import java.sql.*;

public class DBConnection {

    public static Connection con;

    public DBConnection() throws Exception {

            try{
        String intraUrl = "jdbc:mysql://blabla:3306/"; //HS-URL

        String db = "";     //Database name
        String user = "";   //user of this db
        String pw = "";     //Password of user

        con = DriverManager.getConnection(intraUrl + db, user, pw);
                con.setAutoCommit(false);

            } catch(Exception e){new Exception("Connection failerd!");}
    }

}

我想填寫jtable的課程

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.sql.*;

import net.proteanit.sql.DbUtils;

import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;

public class FlugzeugTypAnlegen extends JFrame {

    static DBConnection con;
    private JTable table;

public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    FlugzeugTypAnlegen frame = new FlugzeugTypAnlegen();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        // Objekt der DBConnection Klasse um zur Datenbank zu verbinden
        try {
            new DBConnection();
            JOptionPane.showMessageDialog(null, "Sie sind mit der HolgAIR Zentrale Verbunden!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

public FlugzeugTypAnlegen() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 948, 647);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

JButton button = new JButton("Tabelle Laden");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try{
                    String query = "select IDFlugzeugtyp as ID, Name, Typ, Reichweite, FirstClassMax as Firstclass, BusinessClassMax as Businessclass, EconomyClassMax as Economyclass from Flugzeugtyp";
                    PreparedStatement sta = DBConnection.con.prepareStatement(query)
                    ResultSet rs = sta.executeQuery();

                    table.setModel(DbUtils.resultSetToTableModel(rs));
                }catch (Exception e){
                    e.printStackTrace();    
            }
            }});

謝謝。 :)

除了缺少分號之外,並且在沒有實際錯誤消息的情況下,我看不到您的問題是什么。

但是您不想做任何事情。 靜態Connection不會在可執行文件的生命周期內持續存在,除非您的應用程序完全是單線程的,否則它將始終失敗。 您希望獲得一個新的Connection ,並在完成后將其關閉。 您應該將DBConnection類更改為final,並具有返回 Connection.靜態方法Connection.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM