jdbc到MYSQL错误:“table airportdetails不存在”

时间:2012-05-16 18:34:13

标签: mysql jsp jdbc database-connection sqlexception


我正在尝试使用后端的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我可以看到该表已创建并存在: enter image description here 我收到此错误的原因是什么?
谢谢。

2 个答案:

答案 0 :(得分:1)

的executeUpdate()

在此PreparedStatement对象中执行SQL语句,该语句必须是SQL INSERTUPDATEDELETE语句;或者什么都不返回的SQL语句,例如DDL语句。

  

目前您正在尝试使用它来创建表格。这就是你得到这个错误的原因。

请参阅文档 Java 6 Java 1.4.2 executeUpdate

编辑:

您应该使用Statement

创建一个表格
Statement st = con.createStatement();
String table = "Create table .......";
st.executeUpdate(table);

答案 1 :(得分:1)

你可以在构造函数级别初始化连接和加载驱动程序,然后在方法中你可以先创建检查表是否存在或创建它然后如果它成功,继续执行insert操作。像这样:

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();
                        }
                    }
                }
            }