如何使用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而不在我的连接类中实现方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 get 发送数据而不在 url 中显示参数?

如何编写我的小部件而不在 dojo.ready 中声明它的代码

如何在 django 中提供图像而不在 django 中使用 <img> 标签?

如何将我正在使用 webpack 构建的反应应用程序链接到 phpmyadmin 外部数据库并查询它而不在代码中显示我的数据库密码?

如何使用 ALAssetsLibrary 访问照片而不在 iOS5 中请求位置访问?

c++ - 如何使用make链接c ++中不同目录中的对象而不在makefile中引用它们?