0

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

当我尝试将数据插入到我的 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-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)) 存储谁生成了账单。(EMPLOYEE ID) 连接类型:ODBC

请帮助解决这个问题。

4

4 回答 4

1

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

于 2013-10-27T17:53:46.540 回答
0

尝试这个:

stmt.executeUpdate("insert into Bill_Master values('"+billid+"',to_date('"+date+"', 'dd-MON-yyyy'),'"+cname+"','"+total+"','"+bdsc+"','"+total+"','"+uid+"')");
于 2013-10-27T17:21:26.377 回答
0

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

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

于 2013-10-28T16:41:16.517 回答
0

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

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

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

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

于 2013-10-27T17:43:12.277 回答