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

标签 java sql jsp

我正在尝试使用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/

相关文章:

java - SSLContext 和 SSLSocketFactory createSocket 线程安全吗?

java - 什么是可以在我的Web应用程序出现故障时通知我的工具或Tomcat配置?

java - 如何使用ajax通过servlet重定向到成功页面?

java - 如何以 (System.out.println(numbers)); 打印的方式将数字相加数字++;

java - 在 Java 中增量更改字符串中的数字

MySQL 多对多查询

sql - 返回表与重复查询的函数

php - 我的社交网络中的用户无法注册和登录

java - 从数据库加载选中的复选框

java - Spring-ws javaconfig位置转换