【问题标题】:Error While Inserting Data to Database from Java Program从 Java 程序向数据库插入数据时出错
【发布时间】:2013-11-06 09:48:19
【问题描述】:

我正在尝试开发一个库存管理系统,作为我的迷你项目的一部分。

当我尝试将数据插入到我的 Bill_Master 数据库时,它返回一个错误

java.sql.SQLException: [Microsoft][ODBC driver for Oracle][Oracle]ORA-01858: 在需要数字的地方发现了非数字字符

       bqty=Integer.parseInt(iqty.getText());
       bamount=Float.parseFloat(famnt.getText());
       bdsc=Integer.parseInt(dsc.getText());
        bnet=Float.parseFloat(netamnt.getText());
         billid=Integer.parseInt(billn.getText());
         code=Integer.parseInt(icode.getText());
         bqty=Integer.parseInt(iqty.getText());
         rate=getRate(code);
         iamount=rate*bqty;
         amt.setText(Float.toString(iamount)); 
         total=total+iamount;


       try 
       {
           billdetailid++;  
     stmt.executeUpdate("insert into Bill_Master values('"+billid+"','"+date+"','"+cname+"','"+total+"','"+bdsc+"','"+total+"','"+uid+"')");//Error Causing Line. 

值是 (1,'27-oct-2013','n/a',900.00,0.0,900.00,'Desk')

表结构

  1. Bill_Id (Primary Key INT ):-存储账单编号

  2. Bill_Date(日期):存储账单日期

  3. Customer_Name (VARCHAR(50)):客户名称

  4. Total_amt (NUMBER(6)):账单总额

  5. Cash_Disc (Number(2)):折扣

  6. Grand_Total(Number(6)):总计

  7. UID(VARCHAR(10)) 存储谁生成了账单。(员工 ID) 连接类型:ODBC

请帮忙解决这个问题。

【问题讨论】:

    标签: java sql oracle jdbc


    【解决方案1】:

    您在每个值周围加上单引号,包括定义为 int 的 bill_Id。 SQL 数据库将其作为字符串读取并抱怨。此外(正如已经指出的)PreparedStatements 使这更容易和更安全。

    【讨论】:

      【解决方案2】:

      试试这个:

      stmt.executeUpdate("insert into Bill_Master values('"+billid+"',to_date('"+date+"', 'dd-MON-yyyy'),'"+cname+"','"+total+"','"+bdsc+"','"+total+"','"+uid+"')");
      

      【讨论】:

        【解决方案3】:

        首先,这是用 java 编写 SQL 查询的一种可怕方式!!!

        我猜你刚刚开始学习。请查看PreparedStatements

        与数据类型相关的错误将变得更容易调试。

        这也不是您编写连续字符串追加的方式。查看 StringBuilder 和 String Buffer

        【讨论】:

          【解决方案4】:

          我找到了确切的问题。原因是我试图插入标签而不是标签中的文本。 正确的说法是

          stmt.executeUpdate("insert into Bill_Master values('"+billid+"','"+date.getText()+"','"+cname.getText()+"','"+total+"','"+bdsc+"','"+total+"','"+uid+"')");

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-12-28
            • 2016-08-23
            • 1970-01-01
            • 2016-05-23
            • 1970-01-01
            • 2014-05-11
            • 1970-01-01
            相关资源
            最近更新 更多