我从互联网上下载了一个脚本 - 它是一个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服务器,并且一些属性也发生了变化,但似乎没有任何帮助。
答案 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]>