为什么我得到ORA-01722:项目中的号码无效?

时间:2016-04-21 05:17:27

标签: oracle

我尝试建立通过或失败系统,用户输入id,number,m1,m2,m3并点击提交以获得通过或失败。我使用DAO,VO,DTO来处理结果,但我得到了#34;无效号码" SQLSYNTAXERROR。是什么原因?

 public int insert(StudentBO bo)
 {
     try
     {
            //get IntialConetext 
            InitialContext ic = new InitialContext();
            //get data sourse obj
            DataSource ds = (DataSource) ic.lookup("java:/comp/env/jdbc/MyLocalDB");
            //get con obj from jdbc con pool
            con = ds.getConnection();
            //create preapared Statement obj
            ps = con.prepareStatement(STUDENT_INSERT_QRY);
            ps.setInt(1,bo.getSno());
            ps.setString(2, bo.getSname());
            ps.setInt(3,bo.getTotal());
            ps.setFloat(4,bo.getAvg());
            ps.setString(5,bo.getResult());
            //execute the query
            int res = ps.executeUpdate();
            return res;
     }//try
     catch(SQLException se)
     {
        se.printStackTrace(); 
     }
     catch(Exception e)
     {
         e.printStackTrace();
     }
     return 0;
 }//insert 

这是我在数据库中的表

 CREATE TABLE "SCOTT"."STUDENT_TAB" 
 (  
"SNO" NUMBER, 
"NAME" VARCHAR2(20 BYTE), 
"M1" NUMBER, 
"M2" NUMBER, 
"M3" NUMBER
)

1 个答案:

答案 0 :(得分:1)

您的代码设置此参数:

ps.setString(5,bo.getResult());

与STUDENT_TAB的这一栏一致:

"M3" NUMBER

这似乎是INVALID_NUMBER错误的最可能来源。您需要检查实际值bo.getResult()返回的内容;然后检查使用setString()对它的影响。