【问题标题】:Incorrect Integer Value: How do i convert my Data from String to Int to avoid Auto_Increment?不正确的整数值:如何将我的数据从 String 转换为 Int 以避免 Auto_Increment?
【发布时间】:2016-06-30 08:45:52
【问题描述】:

我无法将我的字符串转换为整数。我的数据表由 3 列组成,其中两列是 INT 类型。但是当我开始将我的字符串插入我的数据库时,它给出了一个 Auto_Increment 错误:

类:

public class Strong extends javax.swing.JFrame {

  String a;

    public Apply() {
        initComponents();
         jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener()
        {
            @Override
            public void valueChanged(ListSelectionEvent e)
            {
                int selectedRow = jTable1.getSelectedRow();
                a = (String) jTable1.getValueAt(selectedRow, 0);


            }
        }
        );

    }

我的执行更新:

try{

           Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/application","root","");
            String sql= "insert into Mycart values(?,?,?)";
            PreparedStatement pst = con.prepareStatement(sql);            
            pst.setString(1, (String)a);
            pst.setString(2, (String)a);
            pst.setString(3, (String)a);

            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Added to Cart");

        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }

这实际上是对我之前的问题的跟进。我的问题是如何将我的字符串转换为整数,然后将其插入我的数据库?如果您可能会问我从我的 jTable 中获取了我的字符串,然后从我的数据库中获取了它。我现在要做的是获取该 jTable 中的值并将其插入到新数据库中。

【问题讨论】:

    标签: java string netbeans int auto-increment


    【解决方案1】:

    尝试将对象转换为字符串,如下所示

     String a = String.valueOf(jTable1.getValueAt(selectedRow, 0)); 
    
     pst.setString(1, a);
    

    如果您的目标字段类型是整数,请执行此操作。

     pst.setInt(1,Integer.ParseInt(a));
    

    【讨论】:

    • 显示您的表结构(Auto_increment)字段以便更好地考虑。
    • 我仍然收到错误。在您自己的方法中,您将如何将 String 值插入 Int 类型的数据表?我真的需要一个例子。
    • 我正在寻找一种将字符串插入数据库的方法,但每次运行时都会出现此错误:Incorrect Integer value: "SGS2" for column "Price" at row 1.
    • 我反复查看代码,我意识到这段代码部分归咎于:int selectedRow = jTable1.getSelectedRow(); a = (String) jTable1.getValueAt(selectedRow, 0);我认为这段代码只取我的“模型”行的值。它不占用其余行(价格,库存)。有什么方法可以编辑吗?
    • 我们可以拥有 Teamviewer 吗?这样你就可以探索我的代码了?只是一个建议,但如果没有,那也没关系。
    【解决方案2】:

    您可以使用Integer.toString() 方法将字符串转换为整数。只需将字符串作为参数传入即可。

    【讨论】:

    • 转换字符串后如何将其插入数据库?我应该使用什么方法?
    • 是这个方法吗?或者我应该在插入之前先转换字符串: pst.setString(2, Integer.toString(a));
    • 身份证号:497 747 015 通行证:5678
    • 使用整数作为输入的方法。您的 IDE 应该会告诉您这一点。
    【解决方案3】:

    假设您的 auto_increment 字段是您的主键并且您尝试将第一个值放在那里,最好试试这个。

            String sql= "insert into Mycart (your_string_field, your_int_field) values(?,?)";
            PreparedStatement pst = con.prepareStatement(sql);
            pst.setString(1, "your_data_goes_here"); // for string
            pst.p.setInt(2, Integer.parseInt("your_data_goes here")); // for integer
    
            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Added to Cart");
    

    注意:- 对于数据库中的自增字段,您不需要在插入时添加值。这就是它被称为 auto_increment 的原因。所以我删除了第一个字段,因此第二个字段成为您的第一个准备好的语句参数。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多