如何在mysql中添加整数和Varchar(20)并存储为Varchar(20)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在mysql中添加整数和Varchar(20)并存储为Varchar(20)相关的知识,希望对你有一定的参考价值。

我有db命名的备件,其中所有值都存储为varchar(20)。我通过jtextfield将用户的输入作为数字然后转换为整数。 s1(这是itemcode)和s2(这是要添加到实际数量的数量)是输入现在我想将此输入添加到'quantity'(也是varchar)中:

public class AddStockDAO{
   Connection connection;
   PreparedStatement preparedStatement;
   ResultSet resultSet;
   Statement statement;

   public AddStockDAO(String s1,String s2)
   {
       int num=Integer.parseInt(s2);
       String sql= "select "+
             " cast(quantity as INT) from spareparts"+
             "set quantity+= "+num+
             " cast(quantity as varchar(20))"+
             "where itemcode='?'";
       try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "")) {
           try (PreparedStatement stmt = conn.prepareStatement(sql)) {
               stmt.setString(1, s1);

               stmt.executeUpdate();
           }
       } catch (SQLException ex) {   
           Logger.getLogger(AddProductGUI.class.getName()).log(Level.SEVERE, null, ex);
       }

   } 
}
答案

如果我正确理解了问题,您需要根据项目代码更新数据库中的记录。因此,您只需将现有值转换为数字,添加附加值(使用+)并将其转换回来。

int num = 0;
try {
    num = Integer.parseInt(s2);
} catch (Exception e) {
    System.out.println('Nope, that was not a number');
    //Do something else?
}
String insertQuery = "UPDATE spareparts SET quantity = cast(cast(quantity as integer)+"+num+" as char(20)) where itemcode = "+s1+";";

try {
    connection = DriverManager.getConnection(...); //add your data
    preparedStatement = connection.prepareStatement(sql)
    preparedStatement.executeUpdate();
} catch (Exception e) {
    //Something broke
}

另外 - 您应该使用您在类顶部定义的类变量,因此您不必在以后重新创建连接。 但是如果你添加更多的AddStockDAO,它们每个都会创建新的连接,所以我建议你创建一个数据库类,你可以在其中设置一个连接,只是将一些数据或查询传递给一个方法来在现有的连接上运行它。

另一答案

我不会推荐这个。你怎么知道Integer + Varchar(20)是否超过20个字符?

另一答案

正如@Connor所说,没有办法确保结果少于20个字符,所以使用BigInteger字段要好得多,但如果字段必须是varchar(20),我建议从中选择该字段数据库,在java中添加,然后将结果存储回数据库。

以上是关于如何在mysql中添加整数和Varchar(20)并存储为Varchar(20)的主要内容,如果未能解决你的问题,请参考以下文章

mysql创建表及添加表说明

<转> MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

mysql varchar定义长度多少为好

mysql中 varchar(20)我的数据长度超过了,varchar不是自动增长的吗,为啥他把后面超过的内容给截了。

Mysql varchar字段长度越大越好吗?

MySQL中varchar与char区别