1

シンプルな jtextfield で mysql データをバインドしたいと考えています。だから私は以下のようにコードを書いた:

public class SimpleForm extends JFrame implements ActionListener {
    private static final long serialVersionUID = 1L;
    Connection connection = null;
    Statement s = null;
    ResultSet rs;
    String tableName = "mytable";
    JTextField jtf1, jtf2;
    JButton jb;
    String selTable;
    public SimpleForm() {
        initComponents();
        DoConnect();
    }
    public void DoConnect() {
        try {
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/myschema", "root", "root");
            s = connection.createStatement();
            DatabaseMetaData dbm = connection.getMetaData();
            String[] types = { "TABLE" };
            rs = dbm.getTables(null, null, "%", types);
            selTable = "SELECT * FROM " + tableName;
        } catch (SQLException e) {
            System.out.println("Oops! Error occured..");
            e.printStackTrace();
        } finally {
            try {
                s.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    private void initComponents() {
        JPanel jp = new JPanel(new FlowLayout());
        JLabel jl1 = new JLabel("ID");
        jtf1 = new JTextField();
        jtf1.addActionListener(this);
        JLabel jl2 = new JLabel("Name");
        jtf2 = new JTextField();
        jtf2.addActionListener(this);
        jb = new JButton("Next");
        jb.addActionListener(this);
        jp.add(jl1);
        jp.add(jtf1);
        jp.add(jl2);
        jp.add(jtf2);
        jp.add(jb);
        add(jp);
    }
    public void actionPerformed(ActionEvent e) {
        try {
            s.execute(selTable);
            rs = s.getResultSet();
            if ((rs != null) && (rs.next())) {
                rs.next();
                jtf1.setText(rs.getString(1));
                jtf2.setText(rs.getString(2));
            }
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }
    public static void main(String[] args) {
        new SimpleForm().setVisible(true);
    }
    }

私はこれをEclipse indigoとmysqlデータベースで作成しています。libフォルダーにドライバーのjarファイルをインポートしました。それでも次のエラーが発生しました。

Oops! Error occured..
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/myschema
    at java.sql.DriverManager.getConnection(DriverManager.java:604)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at main.SimpleForm.DoConnect(SimpleForm.java:55)
    at main.SimpleForm.<init>(SimpleForm.java:46)
    at main.SimpleForm.main(SimpleForm.java:135)
Exception in thread "main" java.lang.NullPointerException
    at main.SimpleForm.DoConnect(SimpleForm.java:74)
    at main.SimpleForm.<init>(SimpleForm.java:46)
    at main.SimpleForm.main(SimpleForm.java:135)

だから、これを解決するのを手伝ってください。私は本当に問題を理解していません。

4

1 に答える 1

1

これを試してください:

-ビルド パスを使用して Eclipse で mysql-connector.jar のクラスパスを設定する必要があります。また、mysql-connector を Web アプリの WEB-INF ディレクトリの lib フォルダーに配置する必要があります- (Web アプリを開発している場合) .

お役に立てば幸いです。

于 2013-04-08T12:00:10.393 に答える