如何在我的连接类中没有实现方法的情况下使用preparestatement

时间:2015-10-27 22:05:14

标签: java jdbc jtable prepared-statement resultset

我正在尝试使用数据库中的数据填充java中的jtable。 我有一个连接类,我可以连接到服务器但是当我尝试使用prepareStatement时,eclipse告诉我添加强制转换或在我的连接类中创建一个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();    
            }
            }});
谢谢你的帮助。 :)

1 个答案:

答案 0 :(得分:0)

除了缺少分号,并且没有实际的错误消息,我看不出你的问题是什么。

但你不想做任何这个。静态Connection将不会持续可执行文件的生命周期,除非您的应用程序完全是单线程的,否则无论如何都会失败。你希望得到一个新的Connection作为neeed并在完成后关闭它。您应该将DBConnection类更改为final,并使用 static 方法返回 new Connection.