如何使用preparestatement而不在我的连接类中实现方法
Posted
技术标签:
【中文标题】如何使用preparestatement而不在我的连接类中实现方法【英文标题】:how to use preparestatement without implementing a method in my connection class 【发布时间】:2015-10-27 22:05:13 【问题描述】:我正在尝试用我的数据库中的数据填充我在 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】:除了缺少分号,并且没有实际的错误消息,我看不出您的问题是什么。
但你不想这样做。静态Connection
不会在您的可执行文件的生命周期内持续存在,除非您的应用程序完全是单线程的,否则它无论如何都会失败。您想根据需要获得一个新的Connection
并在完成后关闭它。您应该将您的 DBConnection
类更改为 final 并有一个 static 方法返回一个 new Connection.
【讨论】:
以上是关于如何使用preparestatement而不在我的连接类中实现方法的主要内容,如果未能解决你的问题,请参考以下文章
如何编写我的小部件而不在 dojo.ready 中声明它的代码
如何在 django 中提供图像而不在 django 中使用 <img> 标签?
如何将我正在使用 webpack 构建的反应应用程序链接到 phpmyadmin 外部数据库并查询它而不在代码中显示我的数据库密码?