[英]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.