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

执行更新()

INSERT执行此 PreparedStatement 对象中的 SQL 语句,该对象必须是 SQLUPDATEDELETE语句;或不返回任何内容的 SQL 语句,例如 DDL 语句。

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

有关executeUpdate,请参阅文档Java 6Java 1.4.2

编辑:

您应该使用创建一个表Statement

Statement st = con.createStatement();
String table = "Create table .......";
st.executeUpdate(table);
于 2012-05-16T18:43:53.743 回答
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 回答