我正在尝试开发库存管理系统,作为我的迷你项目的一部分。
当我尝试将数据插入我的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, '桌子')
表格结构
Bill_Id(主键INT): - 存储票号
Bill_Date(日期):存储账单日期
Customer_Name(VARCHAR(50)):客户名称
Total_amt(NUMBER(6)):总帐单金额
Cash_Disc(数字(2)):折扣
Grand_Total(Number(6)):Grand Total
UID(VARCHAR(10))存储谁生成账单。(员工ID) 连接类型:ODBC
请帮助解决此问题。
答案 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+"')");