1

これは、MySQL データベースから情報を取得するために Eclipse で作成した Java コードです。しかし、コンパイラは、conn を型に解決できないというエラーを出しています。

import java.sql.*;

public class plh {

static Connection conn=null;
static Statement s=null;

public static void main(String[] args){


    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/wonkashop","root", "");
        String st= new String("select * from users;");
        s= new conn.createStatement(st);//ERROR.. why??

    }
    catch (Exception e) {
        System.out.println("Unable to connect to Database");
    }
}

}
4

6 に答える 6

2

私は同じ問題を抱えていましたが、成功せずに解決策を見つけようとしてインターネットでサーフィンしましたが、これらのインポートを行ったところ、うまくいきました。

import java.sql.*;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

これがより多くの人々を助けることができることを願っています。

于 2016-02-08T17:23:13.540 に答える
2

ここの行で

   s= new conn.createStatement(st);//ERROR.. why??

新しい必要はありませんkeyword

お気に入り

  Class.forName("com.mysql.jdbc.Driver");
  conn = DriverManager.getConnection(credentials);
  stmt = conn.createStatement();
  ResultSet rs = stmt.executeQuery(st);
于 2013-08-24T06:25:04.403 に答える
1

newコード行からキーワードを削除します。asを取得する必要がありますStatement:

 s= conn.createStatement(); // createStatement doesn't take a String argument

DriverManager.getConnection()Connection識別子 によって参照されているオブジェクト を既に返しているconnため、それを使用してStatement.

SQL クエリ文字列を渡したい場合は、a のPreparedStatement代わりに a を使用しますStatement。それはConnection#prepareStatement(sql)です。

声明 :

final String st= "select * from users;";
Statement s = conn.createStatement();
ResultSet rs = stmt.executeQuery(st);

準備済みステートメント:

final String st= "select * from users;";
PreparedStatement preparedStatement = conn.prepareStatement(st);
ResultSet rs = preparedStatement.executeQuery();
于 2013-08-24T06:24:00.963 に答える
0

この行を変更

s= new conn.createStatement(st);//ERROR.. why??

s= conn.createStatement();

接続#createステートメント

新しいデフォルト Statement オブジェクトを返します。

于 2013-08-24T06:24:08.590 に答える
0

ただconn.createStatement();newクラスをインスタンス化していないため、ここには入れないでください。

newクラスのオブジェクトを作成するため、クラスの名前の前にのみ記述してください。しかし、connこれはクラスの名前ではなく、あるクラスの既存のオブジェクトを参照する変数の名前です。

于 2013-08-24T06:24:13.393 に答える