从Java程序向数据库插入数据时出错
我正在尝试开发一个库存管理系统,作为我小型项目的一部分 当我尝试将数据插入我的Bill_Master数据库时,它返回一个错误 java.sql.SQLException:[Microsoft][Oracle的ODBC驱动程序][Oracle]ORA-01858:在需要数字的位置找到非数字字符 价值观是 (1,'2013年10月27日','n/a',900.00,0.0900.00,'Desk') 表结构从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
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+"')");