gpt4 book ai didi

java - sql、jsp、java - 为什么此插入语法会执行错误条件?

转载 作者:行者123 更新时间:2023-12-01 18:48:22 25 4
gpt4 key购买 nike

我正在尝试使用javabean和jsp制作一个输入表单并将它们保存到mysql数据库。因为这是我第一次使用 jsp,所以我不知道为什么这个程序运行插入操作的错误条件。

这是代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

public class Formulir {
public String username;
public String nama;
public String ttl;
public String alamat;
public String telp;
public String id_form;
public Statement stmt=null;
public Connection conn = null;
public String sURL = "jdbc:odbc:formulir";

public boolean insertIntoDB (String username, String nama, String ttl, String alamat, String telp, String id_form) {
String sql = "insert into formulir values('"+username+"', '"+nama+"', '"+ttl+"', '"+alamat+"', '"+telp+"', '"+id_form+"')";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(sURL, "", "");
stmt=conn.createStatement();
stmt.execute(sql);
stmt.close();
return true;
} catch(Exception e) {
return false;
}
}

这是输入表单处理的代码:

<jsp:useBean id="formulir" scope="session" class="BMS.Formulir" />
<jsp:setProperty name="formulir" property="*" />
<% if ((String)session.getAttribute("username")==null && (String)session.getAttribute("password")==null){
response.sendRedirect("daftar.jsp");} %>

<%
String username=(String)session.getAttribute("username");
String nama=request.getParameter("nama");
String ttl=request.getParameter("ttl");
String alamat=request.getParameter("alamat");
String telp=request.getParameter("telp");
String id_form="NULL";
%>

<html>
<h2> <%=formulir.insertIntoDB(username, nama, ttl, alamat, telp, id_form)%> </h2>
</html>

这是公式表的结构:

username (varchar)
nama (varchar)
ttl (varchar)
alamat (varchar)
telp (varchar)
id_form (int)

最佳答案

试试这个:

  • 返回可能的错误信息进行测试
  • 在 SQL INSERT 中列出列名称,因此稍后添加的字段不会导致回归错误
  • 使用PreparedStatement。这可以防止 SQL 注入(inject)黑客攻击,并转义单引号和反斜杠
  • 关闭连接
  • 保留所有本地内容

可能需要更正。在 Internet 上查找 Web 应用程序中数据源的使用情况。存在 MySQL 驱动程序,而不是 JDBC/ODBC 桥。

public String insertIntoDB (String username, String nama,
String ttl, String alamat, String telp, String id_form) {
String sql = "INSERT INTO formulir(username, nama, ttl, alamat, telp, id_form)"
+ " VALUES(?, ?, ?, ?, ?, ?)";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(sURL, "", "");
PreparedStatement stmt = conn.preparedStatement(stmt);
stmt.setString(1, username);
stmt.setString(2, nama);
stmt.setString(3, ttl);
stmt.setString(4, alamat);
stmt.setString(5, telp);
stmt.setInteger(6, Integer.parseInt(id_form));
int count = stmt.executeUpdate();
stmt.close();
conn.disconnect();
return "Updated: " + count;
} catch(Exception e) {
return e.getMessage();
}
}

关于java - sql、jsp、java - 为什么此插入语法会执行错误条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com