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

从Java程序向数据库插入数据时出错,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,我正在尝试开发一个库存管理系统,作为我小型项目的一部分 当我尝试将数据插入我的Bill_Master数据库时,它返回一个错误 java.sql.SQLException:[Microsoft][Oracle的ODBC驱动程序][Oracle]ORA-01858:在需要数字的位置找到非数字字符 价值观是 (1,'2013年10月27日','n/a',900.00,0.0900.00,'Desk') 表结构 票据Id(主键INT):-存储票据编号 账单日期(日期):存储账单日期 客户名称(VARCH

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

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

java.sql.SQLException:[Microsoft][Oracle的ODBC驱动程序][Oracle]ORA-01858:在需要数字的位置找到非数字字符

价值观是 (1,'2013年10月27日','n/a',900.00,0.0900.00,'Desk')

表结构

  • 票据Id(主键INT):-存储票据编号

  • 账单日期(日期):存储账单日期

  • 客户名称(VARCHAR(50)):客户名称

  • 总金额(数字(6)):票据总金额

  • 现金盘(编号(2)):折扣

  • 总计(6个):总计

  • UID(VARCHAR(10))存储生成账单的人。(员工ID) 连接类型:ODBC

  • 请帮助解决此问题。

    尝试以下方法:

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

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

    我猜你刚刚开始学习。请退房

    与数据类型相关的bug将更容易调试


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

    您将在每个值周围加上单引号,其中包括定义为int的bill_Id。SQL数据库将其作为字符串读取,并发出抱怨。而且(正如已经指出的那样)预处理语句使这变得更加容易和安全

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

    stmt.executeUpdate(“插入票据主值(“+billid+”、“+date.getText()+”、“+cname.getText()+”、“+total+”、“+bdsc+”、“+total+”、“+uid+”))

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