<% String content = request.getParameter("area"); String score = request.getParameter("sor"); System.out.print(content); Connection conn = SQLConn.openDB(); %> <% //创建Statement , 执行 SQL 查询 Statement sm=conn.createStatement(); //查询用户名登陆状态 String sql; sql ="select UserId,Name,Login from User_ZC where Login='"+1+"' "; // 执行查询 ResultSet rs = sm.executeQuery(sql); if(rs.next()) { //用户在登陆状态 String name = rs.getString("Name"); int ID = rs.getInt("UserId"); int dbpass = rs.getInt(1); //System.out.println(dbpass); if(dbpass>0){ //用户合法,可以进行评论 final String INSERT_SQL = "INSERT INTO LiuYan(UserId, Score, Word) VALUES (?, ?, ?)"; //向评论表中插入数据 int count = 0; try { PreparedStatement stmt = conn.prepareStatement(INSERT_SQL); { stmt.setInt(1, ID); stmt.setString(2, score); stmt.setString(3, content); count = stmt.executeUpdate(); } }catch (SQLException e) { e.printStackTrace(); } if(count>0){ //插入成功,在页面显示刚才输入的评论 %> 用户名:<%=name%> 满意度:<%=score %> 评论:<%=content %> <% System.out.print("评论存入表LiuYan成功"); }else{ %> 插入出错 <% System.out.print("插入数据失败"); } }else{ System.out.print("未登录,请先登陆再进行预约"); request.getRequestDispatcher("ZCB.jsp").forward(request, response); }} else{ System.out.print("未登录,请先登陆再进行预约"); request.getRequestDispatcher("ZCB.jsp").forward(request, response); } %>为什么会插入数据库失败
时间: 2024-04-27 21:22:21 浏览: 77
在代码中,当插入数据失败时,会输出 "插入出错",同时打印出 "插入数据失败",但是没有给出具体的错误信息,因此很难确定插入失败的具体原因。插入数据失败可能有多种原因,例如 SQL 语句错误、数据库连接异常、数据类型不匹配等。在此建议在 `catch` 代码块中加入打印错误信息的语句,例如 `e.printStackTrace()`,这样可以在控制台输出详细的错误信息,有助于定位问题所在。同时,应该检查数据库表中的字段类型、长度是否与代码中的数据类型匹配,是否存在唯一性约束等问题。
相关问题
控制台输出为“插入数据失败1986291198nullnull”,请检查代码 <% String content = request.getParameter("area"); String score = request.getParameter("sor"); Connection conn = SQLConn.openDB(); %> <% //创建Statement , 执行 SQL 查询 Statement sm=conn.createStatement(); //查询用户名登陆状态 String sql; sql ="select UserId,Name,Login from User_ZC where Login='"+1+"' "; // 执行查询 ResultSet rs = sm.executeQuery(sql); if(rs.next()) { //用户在登陆状态 String name = rs.getString("Name"); int ID = rs.getInt("UserId"); int dbpass = rs.getInt(1); //System.out.println(dbpass); if(dbpass>0){ //用户合法,可以进行评论 final String INSERT_SQL = "INSERT INTO LiuYan(UserId, Score, Word) VALUES (?, ?, ?)"; //向评论表中插入数据 int count = 0; try { PreparedStatement stmt = conn.prepareStatement(INSERT_SQL); { stmt.setLong(1, ID); stmt.setString(2, score); stmt.setString(3, content); count = stmt.executeUpdate(); } }catch (SQLException e) { e.printStackTrace(); } if(count>0){ //插入成功,在页面显示刚才输入的评论 %> 用户名:<%=name%> 满意度:<%=score %> 评论:<%=content %> <% System.out.print("评论存入表LiuYan成功"); }else{ %> 插入出错 <% System.out.print("插入数据失败"); System.out.print(ID); System.out.print(score); System.out.print(content); } }else{ System.out.print("未登录,请先登陆再进行预约"); request.getRequestDispatcher("ZCB.jsp").forward(request, response); }} else{ System.out.print("未登录,请先登陆再进行预约"); request.getRequestDispatcher("ZCB.jsp").forward(request, response); } %>
根据你提供的信息,错误信息中包含了 "nullnull",说明score或content可能为null。你可以在插入数据之前判断一下score和content是否为null或空字符串,如果是,则不执行插入操作,直接返回错误信息。修改后的代码如下所示:
```
if (score == null || content == null || score.trim().equals("") || content.trim().equals("")) {
System.out.print("提交的评分或内容为空");
} else {
final String INSERT_SQL = "INSERT INTO LiuYan(UserId, Score, Word) VALUES (?, ?, ?)";
int count = 0;
try {
PreparedStatement stmt = conn.prepareStatement(INSERT_SQL);
{
stmt.setLong(1, ID);
stmt.setString(2, score);
stmt.setString(3, content);
count = stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
if (count > 0) {
//插入成功,在页面显示刚才输入的评论
%>
用户名:<%=name%>
满意度:<%=score %>
评论:<%=content %>
<%
System.out.print("评论存入表LiuYan成功");
} else {
%>
插入出错
<%
System.out.print("插入数据失败");
System.out.print(ID);
System.out.print(score);
System.out.print(content);
}
}
```
这样可以避免插入数据时出现空指针异常或插入空数据的情况。
<% String content = request.getParameter("area"); String score = request.getParameter("sor"); System.out.print(content); Connection conn = SQLConn.openDB(); %> <% //创建Statement , 执行 SQL 查询 Statement sm=conn.createStatement(); //查询用户名登陆状态 String sql; sql ="select UserId,Name,Login from User_ZC where Login='"+1+"' "; // 执行查询 ResultSet rs = sm.executeQuery(sql); if(rs.next()) { //用户在登陆状态 String name = rs.getString("Name"); int ID = rs.getInt("UserId"); int dbpass = rs.getInt(1); //System.out.println(dbpass); if(dbpass>0){ //用户合法,可以进行评论 final String INSERT_SQL = "INSERT INTO LiuYan(UserId, Score, Word) VALUES (?, ?, ?)"; //向评论表中插入数据 int count = 0; try { PreparedStatement stmt = conn.prepareStatement(INSERT_SQL); { stmt.setInt(1, ID); stmt.setString(2, score); stmt.setString(3, content); count = stmt.executeUpdate(); } }catch (SQLException e) { e.printStackTrace(); } if(count>0){ //插入成功,在页面显示刚才输入的评论 %> 用户名:<%=name%> 满意度:<%=score %> 评论:<%=content %> <% System.out.print("评论存入表LiuYan成功"); }else{ %> 插入出错 <% System.out.print("插入数据失败"); } }else{ System.out.print("未登录,请先登陆再进行预约"); request.getRequestDispatcher("ZCB.jsp").forward(request, response); }} else{ System.out.print("未登录,请先登陆再进行预约"); request.getRequestDispatcher("ZCB.jsp").forward(request, response); } %> </body> </html>其中,content可以获取数据么?显示为空值
根据代码,`content` 是通过调用 `request.getParameter("area")` 方法获取的,这种方式可以获取客户端通过 HTTP POST 或 HTTP GET 提交的请求参数。因此,需要保证在客户端提交表单时,`area` 参数的值正确填写并提交。
如果 `content` 变量的值为空,可能是由于客户端未正确提交表单或者表单中没有包含名为 `area` 的参数。需要检查客户端提交表单时是否正确填写了相应字段,并且检查是否在表单中正确设置了 `method` 属性为 `POST` 或 `GET`。
另外,可以在 JSP 页面中使用调试技巧,例如在代码中添加 `System.out.println()` 或者使用调试器等工具,来帮助定位问题所在。
阅读全文