【问题标题】:Insert a row to MySQL table with jsp使用jsp向MySQL表中插入一行
【发布时间】:2012-10-31 01:37:59
【问题描述】:

我想用 jsp 代码向 mysql 数据库中插入行,但我不能。 这是我没有html表单的jsp代码:

<%
String login = request.getParameter("login");
String password = request.getParameter("password");
String full_name = request.getParameter("full_name");
String ulevel = request.getParameter("ulevel");
String team_id = request.getParameter("team_id");

Connection connection = null;
PreparedStatement pstatement = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
int updateQuery = 0;
if(login!=null && password!=null && full_name!=null && ulevel!=null && team_id!=null){
if(login!="" && password!="" && full_name!="" && ulevel!="" && team_id!="") {
    try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/android","root","root");
String queryString = "INSERT INTO users(user_id,login,password,full_name,ulevel,team_id) VALUES (null, ?, ?, ?, ?, ?)";
pstatement = connection.prepareStatement(queryString);
pstatement.setString(2, login);
pstatement.setString(3, password);
pstatement.setString(4, full_name);
pstatement.setString(5, ulevel);
pstatement.setString(6, team_id);
updateQuery = pstatement.executeUpdate();
if (updateQuery != 0) { %> 

当我按 SUBMIT 时,网页显示如下:

类型状态报告消息描述请求的资源()是 不可用。

p.s.: mysql 表中user_id 列设置为autoincrement,所以我使用null

但我不知道,这是正确的方式......

我从 netbeans 7.0.1 运行代码

【问题讨论】:

  • 附带说明:不要将逻辑放在 JSP 中,将其移至 servlet。
  • 我有另一个用于从表中选择列的 jsp 代码...没有 servlet 也可以正常工作。
  • 你没有抓住重点,它可以正常工作,但混合表示层 (JSP) 和业务逻辑层 (Servlet) 被认为是一种不好的做法。
  • @ftom2 +1。这是很好的解释:stackoverflow.com/a/3180202/814702

标签: mysql sql jsp jdbc insert


【解决方案1】:

由于ID自动递增的,因此将其从列表中删除,preparedstatement 正在其参数中寻找索引1

String queryString = "INSERT INTO users(login,password,full_name,ulevel,team_id) VALUES (?, ?, ?, ?, ?)";
pstatement = connection.prepareStatement(queryString);
pstatement.setString(1, login);
pstatement.setString(2, password);
pstatement.setString(3, full_name);
pstatement.setString(4, ulevel);
pstatement.setString(5, team_id);

下面这个是未测试

只需以 1 开头参数,因为只有 5 个参数需要定义。

String queryString = "INSERT INTO users(user_id,login,password,full_name,ulevel,team_id) VALUES (null, ?, ?, ?, ?, ?)";
pstatement = connection.prepareStatement(queryString);
pstatement.setString(1, login);
pstatement.setString(2, password);
pstatement.setString(3, full_name);
pstatement.setString(4, ulevel);
pstatement.setString(5, team_id);

【讨论】:

    【解决方案2】:

    我发现了问题。错误是 html 格式的,在属性 action 处,我有一个源文件,这是我以前从未有过的。 :/

    【讨论】:

      【解决方案3】:
      String queryString = "INSERT INTO users(user_id,login,password,full_name,ulevel,team_id) VALUES (?, ?, ?, ?, ?)";
      

      你不应该使用任何东西,即使是null 也不能用于查询!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        相关资源
        最近更新 更多