不要在java jsp中添加数据库

时间:2016-12-18 12:42:10

标签: java mysql jsp

我想在reg.html上使用注册按钮向数据库添加名称和密码的人。用户填写用户名和密码,然后按注册按钮,信息将添加到数据库中。但是我的代码无法正常工作。

public void addPerson(String username, String password) {
    if (con == null) {
        System.out.println("no connection");
        connect();
    }
    try {
        Statement state = con.createStatement();
        ResultSet rs = state.executeQuery("INSERT INTO users VALUES ('" +      username + "', '" + password + "'");
        rs.next();

    } catch (Exception e) {
        e.printStackTrace();

    }

}

这是reg.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<jsp:useBean id="bean1" scope="session" class="veri.kisi" />
<jsp:setProperty name="bean1" property="username"/>    
<jsp:setProperty name="bean1" property="password" />

</body>
</html>

这是kisi.java

public void insertPerson() {
    DatabaseLayer layer = new DatabaseLayer();
    layer.addPerson(username, password);
}

3 个答案:

答案 0 :(得分:0)

请注意其他人给出的上述评论,在从在线资源中插入数据库时​​,可以证明对您的代码安全至关重要。

 public void addPerson(String username, String password) {
if (con == null) {
    System.out.println("no connection");
    connect();
}
try {
    Statement state = con.createStatement();
    state.execute("INSERT INTO users VALUES ('" +      username + "', '" + password + "'");


} catch (Exception e) {
    e.printStackTrace();

}

}

ResultSet对象用于迭代数据库中的表行,而不是将查询插入数据库。

答案 1 :(得分:0)

在进行任何更新之前,我建议您将con.autocommit设置为false。然后使用state.executeUpdate();它将返回一个int类型。检查int是否为&gt; 0.然后只调用con.commit()来执行提交作业。

答案 2 :(得分:0)

无需使用ResultSet,因为insert不是查询。为此,您可以使用PreparedStatement。用以下行替换try块代码。

PreparedStatement ps = con.prepareStatement("insert into users values (?,?)");
ps.setString(1, username);
ps.setString(2, password);
ps.execute();