【问题标题】:How to save data in mysql database in original user input如何在原始用户输入中将数据保存在mysql数据库中
【发布时间】:2018-02-27 21:51:36
【问题描述】:

我为我的评估创建了自定义应用程序, 所以一些输入和生成的数据是浮点值, 所以我不会将这些数据保存在 MySQL 数据库中......就像原始值一样

作为示例 - 10.25 必须保存 10.25 而不是 10.00 不幸的是,它保存为 10.00(如何将数据保存为 10.25) 但在这种情况下,我的代码像以前一样保存值,

这是我使用的代码 -

connectDB();
try{

    String value1 = txt_search_code.getText();
    String value2 = txt_item_code.getText();
    String value3 = txt_discription.getText();
    String value4 = txt_bin_balance.getText();
    String value5 = txt_date.getText();
    String value6 = txt_issued_quantaty.getText();
    String value7 = txt_issued_inno.getText();
    String value8 = txt_arrived_quantaty.getText();
    String value9 = txt_arrived_inno.getText();
    String value10 = txt_final_bin_balance.getText();

    String sql = "Update tbl_stock set No='"+value1+"',ITEM_CODE='"+value2+"',DISCRIPTION='"+value3+"',PREVIOUS_BIN_BALANCE='"+value4+
                 "',DATE='"+value5+"',ISSUED_QUANTATY='"+value6+"',ISSUED_INVOICE_NO='"+value7+"',ARRIVED_QUANTATY='"+value8+"',ARRIVED_INVOICE_NO='"+value9+"',FINAL_BINCARD_BALANCE='"+value10+"'WHERE No='"+value1+"' ";
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.execute();
    JOptionPane.showMessageDialog(null, " Your new records saved Succsessfully!!");

}catch(Exception e){

    JOptionPane.showMessageDialog(null,e);
}

closeDB(); 

这是数据库的MYSQL全部语句

SELECT * FROM db_biling.tbl_stock;
    tbl_stock.No, tbl_stock.ITEM_CODE, tbl_stock.DISCRIPTION, 
    tbl_stock.PREVIOUS_BIN_BALANCE, tbl_stock.DATE, 
    tbl_stock.ISSUED_QUANTATY, tbl_stock.ISSUED_INVOICE_NO,     
    tbl_stock.ARRIVED_QUANTATY, tbl_stock.ARRIVED_INVOICE_NO, 
    tbl_stock.FINAL_BINCARD_BALANCE FROM db_biling.tbl_stock;

那么我怎样才能将数据保存为原始值 请帮我解决这个问题 请给我一个例子 谢谢

更新

CREATE TABLE tbl_stock ( 
    No int(11) NOT NULL, 
    ITEM_CODE varchar(45) DEFAULT NULL, 
    DISCRIPTION varchar(45) DEFAULT NULL, 
    PREVIOUS_BIN_BALANCE decimal(2,0) DEFAULT NULL, 
    DATE varchar(45) DEFAULT NULL, 
    ISSUED_QUANTATY decimal(2,0) DEFAULT NULL, 
    ISSUED_INVOICE_NO varchar(45) DEFAULT NULL, 
    ARRIVED_QUANTATY decimal(2,0) DEFAULT NULL, 
    ARRIVED_INVOICE_NO varchar(45) DEFAULT NULL, 
    FINAL_BINCARD_BALANCE decimal(2,0) DEFAULT NULL, 
    PRIMARY KEY (No) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8

【问题讨论】:

  • 您的列数据类型是什么?显示 CREATE TABLE 语句。
  • CREATE TABLE tbl_stock (No int(11) NOT NULL, ITEM_CODE varchar(45) DEFAULT NULL, DISCRIPTION varchar(45) DEFAULT NULL, PREVIOUS_BIN_BALANCE decimal(2 ,0) DEFAULT NULL, DATE varchar(45) DEFAULT NULL, ISSUED_QUANTATY decimal(2,0) DEFAULT NULL, ISSUED_INVOICE_NO varchar(45) DEFAULT NULL, ARRIVED_QUANTATY decimal(2,0) DEFAULT NULL, ARRIVED_INVOICE_NO varchar(45) DEFAULT NULL, FINAL_BINCARD_BALANCE decimal(2,0) DEFAULT NULL, PRIMARY KEY (No) ) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
  • DECIMAL(2,0) 基本上是一个整数,所以请尝试使用DECIMAL(6,2),这将允许您保留 2 个小数位......或者read the manual

标签: java mysql


【解决方案1】:

我认为问题在于数据类型的精度

如果是 DECIMAL(10, 2) 则总共有 10 个数字,其中 2 个是十进制值(2 个十进制舍入意味着 10.215 保存为 10.22,10.214 变为 10.21)。

在您的情况下,您使用了小数(2,0).. 所以 10.25 将变为 10。

参考: https://stackoverflow.com/a/13501505/7016969

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    相关资源
    最近更新 更多