java.sql.SQLSyntaxErrorException:表/视图不存在

时间:2015-09-26 12:51:36

标签: mysql sql jdbc

我从互联网上下载了一个脚本 - 它是一个JSF注册应用程序,它将使用MySQL服务器为您注册或登录。我已经玩了这段代码3个小时,但我是初学者,所以我真的不知道问题是什么。这是:

if (firstName != null) {  
        PreparedStatement ps = null;  
        Connection con = null;  
        try {  
            if (ds != null) {  
                con = ds.getConnection();  
                System.out.println();

                if (con != null) {  
                    String sql = "INSERT INTO userdata(firstname, password, lastname, email) VALUES(?,?,?,?)";  
                    ps = con.prepareStatement(sql);  
                    ps.setString(1, firstName);  
                    ps.setString(2, password);  
                    ps.setString(3, lastName);  
                    ps.setString(4, email);  
                    i = ps.executeUpdate();  
                    System.out.println("Data Added Successfully");  
                }  
            }  
        } catch (Exception e) {  
            System.out.println(e);  
        } finally {  
            try {  
                con.close();  
                ps.close();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  

它一直说有错误,这是我从控制台得到的:

  

信息:java.sql.SQLSyntaxErrorException:表/视图' userdata'   不存在。

表就在那里。我已经尝试了两种不同的MySQL服务器,并且一些属性也发生了变化,但似乎没有任何帮助。

1 个答案:

答案 0 :(得分:0)

我几乎可以肯定你在表名中有一个点。所以MySQL解释这个SCHEMA APP和表名PICOVINA,这场战争不存在。所以用反引号引用你的完整表名。

MariaDB [tmp]> show tables like 'APP%';
+----------------------+
| Tables_in_tmp (APP%) |
+----------------------+
| APP.PICOVINA         |
+----------------------+
1 row in set (0.00 sec)

MariaDB [tmp]> select * from APP.PICOVINA;
ERROR 1146 (42S02): Table 'app.picovina' doesn't exist
MariaDB [tmp]>
MariaDB [tmp]>
MariaDB [tmp]> select * from `APP.PICOVINA`;
Empty set (0.00 sec)

MariaDB [tmp]>