从Java程序向数据库插入数据时出错

时间:2013-10-27 17:17:44

标签: java sql oracle jdbc

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

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

  

java.sql.SQLException:[Microsoft] [Oracle的ODBC驱动程序] [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 - 辛2013' , 'N / A',900.00,0.0,900.00, '桌子')

表格结构

  1. Bill_Id(主键INT): - 存储票号

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

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

  4. Total_amt(NUMBER(6)):总帐单金额

  5. Cash_Disc(数字(2)):折扣

  6. Grand_Total(Number(6)):Grand Total

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

  8. 请帮助解决此问题。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

我发现了确切的问题。原因是我试图在标签中插入Label而不是文本。 正确的陈述是

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