MySQL JDBC Web程序:DB配置错误

时间:2015-05-31 08:37:06

标签: java mysql netbeans jdbc web

我正在尝试从Java Web项目中的MySQL数据库中进行简单的选择。

我已启动并在localhost上运行MySQL。我有一个名为" lab"和一个名为" lab_user"有1条记录:

enter image description here enter image description here

问题在于每次我尝试从程序中选择这一行时,都会收到错误消息,表示该表不存在。所以我相信我的DB配置可能有问题。

下面你可以找到我的代码,我的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>

context.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:Table / View&#39; LAB_USER&#39;不存在。

2 个答案:

答案 0 :(得分:0)

我在上下文中看不到name属性。它应该是这样的:

<Context>
    <Resource name="jdbc/lab" 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>

否则,应用程序无法访问已定义的数据源。

答案 1 :(得分:0)

如果您查看代码:

   id = results.getString("id");
   name = results.getString("name");

列名称错误:它们是user_id和user_name。我不知道为什么错误信息是关于表名的。

令人惊讶的是,这些小事让我们花了一天的时间进行调查。

干杯