【发布时间】:2015-08-13 20:18:46
【问题描述】:
我正在尝试从 Java Web 项目中的 MySQL 数据库中进行简单的选择。
我在本地主机上启动并运行了 MySQL。我有一个名为“lab”的数据库和一个名为“lab_user”的表,其中包含 1 条记录:
问题是每次我尝试从程序中选择这 1 行时,都会收到一条错误消息,指出该表不存在。所以我相信我的数据库配置可能有问题。
您可以在下面找到我的代码、我的 web.XML 和我的 context.XML。
您能帮我看看这里是否有什么问题阻止我访问正确的数据库吗?
谢谢你
代码
package DAO;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import DTO.UserDTO;
public class UserDAO {
private Connection connection = null;
private Statement statement = null;
private PreparedStatement prepStatement = null;
private ResultSet results = null;
private static final String DATASOURCE_NAME = "java:comp/env/jdbc/lab";
public void getConnection() {
if (connection == null) {
try {
Context initialContext = new InitialContext();
DataSource ds = (DataSource) initialContext.lookup(DATASOURCE_NAME);
connection = ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public UserDTO selectUser(String userID) {
//pessoal
String id = "";
String name = "";
try {
getConnection();
statement = connection.createStatement();
results = statement.executeQuery("select * from lab_user where user_id = 1");
if (results != null) {
results.next();
id = results.getString("id");
name = results.getString("name");
}
results = null;
///
} catch (SQLException e) {
String error = "" + e;
e.printStackTrace();
} finally {
cleanUp();
}
results = null;
UserDTO uDTO = new UserDTO();
uDTO.setName(name);
uDTO.setID(id);
return uDTO;
}
web.xml
<description>DB Connection</description>
<res-ref-name>jdbc/lab</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
上下文.XML
<Context>
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="30" maxIdle="100" maxWait="10000" name="labDB" password="hacking" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/lab?zeroDateTimeBehavior=convertToNull" username="fabio"/>
</Context>
错误:java.sql.SQLSyntaxErrorException:表/视图“LAB_USER”不存在。
【问题讨论】:
-
是您发布的代码中的错误消息吗?该错误抱怨
LAB_USER,但在代码中你有lab_user -
@Joni:这应该不是问题,因为在 MySQL 中,表名/字段名/等不区分大小写。
-
@SandorNemeth 表名是否区分大小写取决于文件系统。 dev.mysql.com/doc/refman/5.6/en/…
-
@Joni 感谢手动链接。我在 Unix/OSX/Windows 上工作时从来没有遇到过这种问题。
标签: java mysql netbeans jdbc web