0


バックエンドで jdbc を使用して、jsp ページから MySQL データベースに接続しようとしています。
次のコードがあります。

public static void insertIntoDatabase(String code,String name,String temp,String hum,String del) {
    Connection con = null;
    if (del.length() == 0) {
        del="no data";  
    }
    name = name.replaceAll("\\(.+?\\)", "");
    name = name.replaceAll(" ", "_");
    del = del.replaceAll(" ", "_");
    System.out.println("del "+del);

    String url = "jdbc:mysql://localhost:3306/test";

    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection(url,"root","");
        con.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS aiportdetails(code VARCHAR(50) PRIMARY KEY, " +
                "name VARCHAR(250), temp VARCHAR(50), hum VARCHAR(50), del VARCHAR(50))");
        ResultSet rs = con.prepareStatement("SELECT * FROM airportdetails;").executeQuery();
    } catch (SQLException ex) {
        ex.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } finally {
        try {
            if (con != null) {
                con.close();
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

次のエラーが表示されます

ResultSet rs = con.prepareStatement("SELECT * FROM airportdetails;").executeQuery();

エラー:

テーブル「test.airportdetails」が存在しません

しかし、phpmyadmin から、テーブルが作成され、存在することがわかり ここに画像の説明を入力 ます。このエラーが発生する理由は何ですか?
ありがとうございました。

4

2 に答える 2

1

接続を初期化してコンストラクターレベルでドライバーをロードできます。次に、メソッドで最初に作成して、テーブルが存在するかどうかを確認するか、作成してから、成功した場合は挿入操作を続行します。次のように:

public class MyBean{ 
                 String url = "jdbc:mysql://localhost:3306/test,"root","" ";

              public MyBean(){
                 try{
                   Class.forName("com.mysql.jdbc.Driver");
                   con = DriverManager.getConnection(url);
                    }catch(Exception e){
                     }
              }
            public static void insertIntoDatabase(String code,String name,String temp,String hum,String del) {
                    Connection con = null;
                    if (del.length() == 0) {
                        del="no data";  
                    }
                    name = name.replaceAll("\\(.+?\\)", "");
                    name = name.replaceAll(" ", "_");
                    del = del.replaceAll(" ", "_");
                    System.out.println("del "+del);


                    try {
                         con = DriverManager.getConnection(url);
                    Int result =  con.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS aiportdetails(code VARCHAR(50) PRIMARY KEY, " +
                                "name VARCHAR(250), temp VARCHAR(50), hum VARCHAR(50), del VARCHAR(50))");
                   if(result>0){
                         try{
                         ResultSet rs = con.prepareStatement("SELECT * FROM airportdetails;").executeQuery();
                     }catch(Exception e){

                          }finally{
                        }
               }//end if
            } catch (SQLException ex) {
                        ex.printStackTrace();
                    } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                    } finally {
                        try {
                            if (con != null) {
                                con.close();
                            }

                        } catch (SQLException ex) {
                            ex.printStackTrace();
                        }
                    }
                }
            }
于 2012-05-17T08:13:35.633 に答える
1

executeUpdate()

この PreparedStatement オブジェクト内の SQL ステートメントを実行します。これは SQLまたはステートメントINSERTである必要があります。または、DDL ステートメントなど、何も返さない SQL ステートメント。UPDATEDELETE

現在、これを使用してテーブルを作成しようとしています。それが、そのエラーが発生する理由です。

executeUpdateについては、ドキュメントJava 6 OR Java 1.4.2を参照してください。

編集:

を使用してテーブルを作成する必要がありますStatement

Statement st = con.createStatement();
String table = "Create table .......";
st.executeUpdate(table);
于 2012-05-16T18:43:53.743 に答える