我正在尝试使用数据库中的数据填充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();
}
}});
谢谢你的帮助。 :)
答案 0 :(得分:0)
除了缺少分号,并且没有实际的错误消息,我看不出你的问题是什么。
但你不想做任何这个。静态Connection
将不会持续可执行文件的生命周期,除非您的应用程序完全是单线程的,否则无论如何都会失败。你希望得到一个新的Connection
作为neeed并在完成后关闭它。您应该将DBConnection
类更改为final,并使用 static 方法返回 new Connection.