当前位置: 首页 > 面试题库 >

插入时出现Java常规错误... ???

孟英光
2023-03-14
问题内容

我正在尝试Insert, Update and Delete在MS Access中的表上进行操作。一切正常

一个SELECT声明。但是当执行其他三个操作时,我似乎什么也没得到

错误,但操作未反映在数据库上。请帮忙…

INSERT声明如下:

PreparedStatement ps = con.prepareStatement("INSERT INTO Student VALUES (?, ?, ?, ?, ?, ?, ?, ?)");    
  ps.setInt(1,1);    
  ps.setString(2,"ish");    
  ps.setInt(3,100);    
  ps.setInt(4,100);    
  ps.setInt(5,100);    
  ps.setInt(6,300);
  ps.setInt(7,100);
  ps.setString(8,"A");     
  ps.executeUpdate();

我也可以知道为什么PreparedStatement除了SELECT语句之外使用…

我收到此错误:

Exception in thread "main" java.sql.SQLException: General error
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3149)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedState
ment.java:216)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPrepare
dStatement.java:138)
        at Student.main(Student.java:19)

这是我的代码

    import java.sql.*;
    import java.io.*;

    class Student {
        public static void main(String args[]) throws SQLException, IOException,    ClassNotFoundException {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con = DriverManager.getConnection("jdbc:odbc:Student","","");
            Statement st = con.createStatement();
            PreparedStatement ps = con.prepareStatement("INSERT INTO Student VALUES (?, ?, ?, ?, 
            ?, ?, ?, ?)");
            ps.setInt(1,1);
            ps.setString(2,"Girish");
            ps.setInt(3,100);
            ps.setInt(4,100);
            ps.setInt(5,100);
            ps.setInt(6,300);
            ps.setInt(7,100);
            ps.setString(8,"A"); 
            ps.executeUpdate();
            con.commit();
            con.close();
        }
    }

问题答案:

当您不提交
/
关闭连接时,可能会发生这种情况。确保在执行该语句之后提交连接,并在获取和执行它们的finally块的try块中关闭连接(以及语句和结果集)。

至于为什么PreparedStatement使用,这是避免SQL注入
攻击并简化在SQL查询中设置有价值的Java对象(例如DateInputStream而无需将其转换为)的常用方法String



 类似资料:
  • 我的代码有一个错误, 我花了一些时间寻找不同的解决办法,但没有效果。 这是我的代码, 这是我的eclipse控制台的日志。 null 感谢任何帮助。谢谢!

  • 问题内容: 下面是用户单击“ 应用余额” 时的代码 。 这适用于第一部分,用户的余额更新很好,但是当我尝试执行第二条语句时,出现SQL语法错误。是什么原因引起的? 下面是运行此命令时得到的堆栈跟踪。 问题答案: 您的第二个查询缺少子句中的右括号。 代替直接在查询中附加参数,请使用参数化查询。 这样看起来会更干净,更容易编写。最重要的是,它将使您免受SQL Injection 攻击。 这是用于参数化

  • 我正在尝试在表a中插入外键(在phpmyadmin中): 将表A添加外键(id_B)引用B(id_B); 但我得到了一个错误: 表A的id_A为主键,表B的id_B为主键。这两个表都使用innoDB作为存储引擎,表A中的id_B列和表B中的id_B列具有相同的类型。 出了什么问题,我该如何解决?

  • 问题内容: 嗨,我无法执行以下功能而没有遇到以下异常。我不确定为什么会这样。我认为这可能与报价有关。如果有问题,我正在使用derby数据库。 这是我尝试执行的以下代码: 这是例外: 问题答案: 您的代码中有两个问题: SQL语句最后不需要分号。它将使代码失败。 该代码易于进行SQL注入并且难以维护。请改用: 这应该是工作代码: 在 大 平原字符串连接而这种做法对于你的情况之间的区别就是参数会逃跑任

  • 我有下面的代码,在这里我尝试将值插入到2个字符串的multimap中,但是我不断得到一个我无法理解的错误。我已经想解决这件事好几个小时了。 该程序的全部要点是基于多映射插入的自动排序对字典的行进行排序。 我不断得到的错误是:

  • 新数组列表 我用多头填充这个数组列表。 当我试图将其插入postgresql时,我使用以下方法: 使用JDBC模板。但是当我试图运行这段代码时,它在“ARRAY[?]”上给出了一个错误。但如果temp2是一个单一的数字,比如:1253214,它就可以工作。有人有主意吗? 我的错误是: PreparedStatementCallback;错误的SQL语法[UPDATE pb1plnitm SET p