【问题标题】:jdbc to MYSQL error: "table airportdetails doesn't exist"jdbc 到 MYSQL 错误:“表 airportdetails 不存在”
【发布时间】:2012-05-24 08:54:39
【问题描述】:


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

【问题讨论】:

  • 试试“SELECT * FROM 'airportdetails'”。
  • 您好 Todd,您的更改出现此错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“airportdetails”附近使用正确的语法

标签: mysql jsp jdbc database-connection sqlexception


【解决方案1】:

执行更新()

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

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

请参阅文档 Java 6Java 1.4.2 了解 executeUpdate

编辑:

你应该使用Statement创建一个表

Statement st = con.createStatement();
String table = "Create table .......";
st.executeUpdate(table);

【讨论】:

  • 嗨 Siva,我将 executeUpdate() 更改为 execute()。但我仍然收到错误消息。知道为什么吗?
  • 我已经更新了这个问题。我仍然遇到同样的错误。对不起。
  • @Brahadeesh:尝试执行的方式,我已经给出了示例代码。
  • 仍然得到它。我也为 select 语句尝试了同样的事情。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2014-09-10
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多