1

これらのエラーが発生するのはなぜですか? どういう意味ですか?SQL DB のすべてのデータを表示したいだけです。

run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javaapplication25.SearchPatient.<init>(SearchPatient.java:26)
    at javaapplication25.SearchPatient$2.run(SearchPatient.java:146)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

私が使用したコードは次のとおりです。Java アプリのプログラミングが苦手なため、修正方法がわかりません。、誰でもここで私を助けることができますか? :

package javaapplication25;

/**
 *
 * @author cleanfuel
 */
import java.sql.*;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
public class SearchPatient extends javax.swing.JFrame {

    /**
     * Creates new form SearchPatient
     */
    public SearchPatient() throws SQLException {
        initComponents();

        Statement stmt = null;

        ResultSet rs = stmt.executeQuery("SELECT * FROM dbo.Patients");
        ResultSetMetaData rsmetadata = rs.getMetaData();

        int columns = rsmetadata.getColumnCount();

        DefaultTableModel dtm = new DefaultTableModel();
        Vector columns_vector = new Vector();
        Vector rows_vector = new Vector();

        for (int i=1; i< columns; i++){
        columns_vector.addElement(rsmetadata.getColumnName(i));
        }

        dtm.setColumnIdentifiers(columns_vector);

        while (rs.next()){

            rows_vector = new Vector();
            for (int j=1; j<columns; j++){

                rows_vector.addElement(rs.getString(j));
            }
            dtm.addRow(rows_vector);
        }
        tblPatients.setModel(dtm);

    }


    @SuppressWarnings("unchecked")


Connection connection;
    private void formWindowOpened(java.awt.event.WindowEvent evt) {
        // TODO add your handling code here:
        connection = Main.ConnectDatabase();
    }
4

1 に答える 1

2

これらの2行が次々に表示されます

Statement stmt = null;

ResultSet rs = stmt.executeQuery("SELECT * FROM dbo.Patients");

オブジェクトを初期化していないstmtのでnull、何もありません。

基本的には、コンセントを差し込む前にテレビの電源を入れようとするようなもので、うまくいかない可能性があります

詳細についてはJDBC Data Accessを参照してください。ただし、基本的には、データベースへの接続を確立し、その接続を使用して Statement オブジェクトを作成する必要があります。その後、クエリを実行できます。

于 2013-04-06T02:12:15.557 に答える