Имеет исключение Null Pointer и исключение JDBC.sql. Пользователь не найден - PullRequest
0 голосов
/ 09 января 2019

Я заставляю своего пользователя входить и выходить из системы всякий раз, когда я регистрируюсь, это выдает ошибку.

Список проблем:

INFO [stdout] (задание по умолчанию 6) org.h2.jdbc.JdbcSQLException: таблица «USER» не найдена;

Оператор SQL: stdout] (задание по умолчанию-6) INSERT INTO user (имя, пароль, фамилия, адрес электронной почты) VALUES (?,?,?,?) [42102-173]

ОШИБКА [stderr] (задание по умолчанию-6) java.lang.NullPointerException

ОШИБКА [stderr] (задание по умолчанию-6) на com.ark.beans.User.add (User.java:113)

ОШИБКА [stderr] (задание по умолчанию-6) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)

ОШИБКА [stderr] (задание по умолчанию-6) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)

Я проверил каждое имя и соединение, но у меня не работает

Это мой класс пользователя

public User() {
    try {
        Context ctx = new InitialContext();
        ds = (DataSource) ctx.lookup("java:comp/env/jdbc/database");
    } catch (NamingException e) {
        e.printStackTrace();
    }
}

public String add() {
    int i = 0;
    if (firstName != null) {
        PreparedStatement ps = null;
        Connection con = null;
        try {
            if (ds != null) {
                con = ds.getConnection();
                if (con != null) {
                    String sql = "INSERT INTO user(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();
            }
        }
    }
    if (i > 0) {
        return "success";
    } else
        return "unsuccess";
}

public void dbData(String uName) {
    if (uName != null) {
        PreparedStatement ps = null;
        Connection con = null;
        ResultSet rs = null;

        if (ds != null) {
            try {
                con = ds.getConnection();
                if (con != null) {
                    String sql = "select firstname,password from user where firstname = '"
                            + uName + "'";
                    ps = con.prepareStatement(sql);
                    rs = ps.executeQuery();
                    rs.next();
                    dbName = rs.getString("firstname");
                    dbPassword = rs.getString("password");
                }
            } catch (SQLException sqle) {
                sqle.printStackTrace();
            }
        }
    }
}

public String login() {
    dbData(firstName);
    if (firstName.equals(dbName) && password.equals(dbPassword)) {
        return "output";
    } else
        return "invalid";
}

public void logout() {
    FacesContext.getCurrentInstance().getExternalContext();
    FacesContext.getCurrentInstance()
            .getApplication().getNavigationHandler()
            .handleNavigation(FacesContext.getCurrentInstance(), null, "/login.xhtml");
}
}

Это context.xml

<Resource name="jdbc/database" auth="Container" type="javax.sql.DataSource"
          username="root" password="password" driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/appdb" />

Форма для входа в систему

<h:form id="registerForm">
    <table>
        <tr>
            <td><h:outputText value="Enter Your First Name:" /></td>
            <td><h:inputText id="fname" value="#{user.firstName}"
                             required="true" requiredMessage="Please enter your first name" /></td>
            <td><h:message for="fname" style="color:red" /></td>
        </tr>
        <tr>
            <td><h:outputText value="Enter Your Last Name:" /></td>
            <td><h:inputText id="lname" value="#{user.lastName}"
                             required="true" requiredMessage="Please enter your last name" /></td>
            <td><h:message for="lname" style="color:red" /></td>
        </tr>
        <tr>
            <td><h:outputText value="Enter Your email ID:" /></td>
            <td><h:inputText id="email" value="#{user.email}"
                             required="true" requiredMessage="Please enter your email id" /></td>
            <td><h:message for="email" style="color:red" /></td>
        </tr>
        <tr>
            <td><h:outputText value="Enter Password :" /></td>
            <td><h:inputSecret id="psw" value="#{user.password}"
                               required="true" requiredMessage="Please enter your password" /></td>
            <td><h:message for="psw" style="color:red" /></td>
        </tr>
        <tr>
            <td />
            <td><h:commandButton value="Register" action="#{user.add}" /></td>
        </tr>
        <tr>
            <td><h:outputLink value="home.xhtml">Home</h:outputLink></td>
        </tr>
    </table>
</h:form>
...