Java [sqlite不匹配]:数据类型不匹配

Java [sqlite不匹配]:数据类型不匹配,java,sqlite,jdbc,types,mismatch,Java,Sqlite,Jdbc,Types,Mismatch,在将数据插入数据库时,我遇到了一个sqlite不匹配异常。我在netbeans中创建了一个应用程序,但当我试图通过单击按钮选择textfields来更新数据库时,它会显示此异常 您不能为实数类型的Int设置String,因为您会得到这种类型的错误,因此您必须将输入转换为正确的类型,例如: prodID.getText()应该是一个int而不是字符串,因此您必须像这样使用它: pst.setInt(1, Integer.parseInt(prodID.getText())); //--^^^^^

在将数据插入数据库时,我遇到了一个sqlite不匹配异常。我在netbeans中创建了一个应用程序,但当我试图通过单击按钮选择textfields来更新数据库时,它会显示此异常


您不能为实数类型的
Int
设置
String
,因为您会得到这种类型的错误,因此您必须将输入转换为正确的类型,例如:

prodID.getText()
应该是一个int而不是字符串,因此您必须像这样使用它:

pst.setInt(1, Integer.parseInt(prodID.getText()));
//--^^^^^----------^^convert your String to int and change setString to setInt

其余部分也一样。

对于实数类型的
Int
,您不能设置
String
,因为您会遇到这种类型的错误,因此您必须将输入转换为正确的类型,例如:

prodID.getText()
应该是一个int而不是字符串,因此您必须像这样使用它:

pst.setInt(1, Integer.parseInt(prodID.getText()));
//--^^^^^----------^^convert your String to int and change setString to setInt

其余的也一样。

@YCF\u L正确地解释了这个问题。我相信@Muhammad Quanit的问题在于,您不理解您的查询要求什么,以及您试图传递到查询中的内容。 要对其进行细分,请执行以下查询:

"Insert into Calculation_Info (prodID,item_name,net_amount,tax_rate,Amt_Of_Product,Grand_Total) values(?,?,?,?,?,?)"
获取您必须提供的6个值(请注意每个值的类型):

  • prodID(int)
  • 项目名称(字符串)
  • 净金额(双倍)
  • 税率(大十进制)
  • 产品金额(整数)
  • 总计(大十进制)
  • 在您的程序中,您有6个文本框,这些文本框将获取这些值,以便在调用方法时输入:
    getText()
    它返回一个
    String
    类型。因此,当我们尝试将
    字符串prodID=“3”
    放入SQL查询时,您将收到最初收到的错误:数据类型不匹配。现在您当前的问题是:java.lang.numberFormatException:用于输入字符串。这意味着您正在尝试将字符串值转换为数字;然而,它正在失败。那么,可能的原因是什么呢?嗯

    /* Lets say I have a string with value 4.7*/
        String s = "4.7";
    /* Lets try to parse this using parseInt method*/
        Integer.parseInt(s); //NumberFormatException -- because 4.7 cannot be converted into an int
    /* How about if my string was a word/phrase?*/
        String s = "foo";
    /* Attempt to parse...*/
        Integer.parseInt(s); //NumberFormatException -- because "foo" cannot be converted into integer
        Double.parseDouble(s); //NumberFormatException -- because "foo" cannot be converted into a double
    
    因此,正如您所看到的,您必须非常小心,并跟踪正在转换和传递到查询中的内容(反之亦然)

    正如@YCF_L所提到的,您的字符串的开头或结尾可能包含空格。在
    String
    类中有一个名为
    trim()
    的方法可以帮助您实现这一点

    /* Let's call the getText() method to obtain our string */
        String s = item_name.getText(); // s = "    Foo Bar " 
    /* NOTE: the white spaces (' ') BEFORE and AFTER the String we want*/
        System.out.println(s.trim()); // Prints out "Foo Bar"
    
    因此,
    String
    对象有一个名为
    trim()
    的方法,该方法去掉了尾随空格和前导空格,而不是中间的空格。因此,我们将获得
    “Foo Bar”
    ,而不是
    “Foo Bar”

    我高估了@YCF_L的答案——他值得表扬。我只是想让你理解这个概念,因为在他解释之后,你仍然感到困惑,然后收到了NumberFormatException


    编辑以包括注释中提到的
    trim()
    方法。

    @YCF\u L正确解释了问题。我相信@Muhammad Quanit的问题在于,您不理解您的查询要求什么,以及您试图传递到查询中的内容。 要对其进行细分,请执行以下查询:

    "Insert into Calculation_Info (prodID,item_name,net_amount,tax_rate,Amt_Of_Product,Grand_Total) values(?,?,?,?,?,?)"
    
    获取您必须提供的6个值(请注意每个值的类型):

  • prodID(int)
  • 项目名称(字符串)
  • 净金额(双倍)
  • 税率(大十进制)
  • 产品金额(整数)
  • 总计(大十进制)
  • 在您的程序中,您有6个文本框,这些文本框将获取这些值,以便在调用方法时输入:
    getText()
    它返回一个
    String
    类型。因此,当我们尝试将
    字符串prodID=“3”
    放入SQL查询时,您将收到最初收到的错误:数据类型不匹配。现在您当前的问题是:java.lang.numberFormatException:用于输入字符串。这意味着您正在尝试将字符串值转换为数字;然而,它正在失败。那么,可能的原因是什么呢?嗯

    /* Lets say I have a string with value 4.7*/
        String s = "4.7";
    /* Lets try to parse this using parseInt method*/
        Integer.parseInt(s); //NumberFormatException -- because 4.7 cannot be converted into an int
    /* How about if my string was a word/phrase?*/
        String s = "foo";
    /* Attempt to parse...*/
        Integer.parseInt(s); //NumberFormatException -- because "foo" cannot be converted into integer
        Double.parseDouble(s); //NumberFormatException -- because "foo" cannot be converted into a double
    
    因此,正如您所看到的,您必须非常小心,并跟踪正在转换和传递到查询中的内容(反之亦然)

    正如@YCF_L所提到的,您的字符串的开头或结尾可能包含空格。在
    String
    类中有一个名为
    trim()
    的方法可以帮助您实现这一点

    /* Let's call the getText() method to obtain our string */
        String s = item_name.getText(); // s = "    Foo Bar " 
    /* NOTE: the white spaces (' ') BEFORE and AFTER the String we want*/
        System.out.println(s.trim()); // Prints out "Foo Bar"
    
    因此,
    String
    对象有一个名为
    trim()
    的方法,该方法去掉了尾随空格和前导空格,而不是中间的空格。因此,我们将获得
    “Foo Bar”
    ,而不是
    “Foo Bar”

    我高估了@YCF_L的答案——他值得表扬。我只是想让你理解这个概念,因为在他解释之后,你仍然感到困惑,然后收到了NumberFormatException


    编辑为包含注释中提到的
    trim()
    方法。

    请将您的异常放在此处而不是图像请将您的异常放在此处而不是图像请Hey bro!这个问题解决了,但现在它抛出了java.lang.nullpointerexception:输入字符串“”“嘿,兄弟!这个问题解决了,但现在它抛出了java.lang.numberFormatException:输入字符串“”。请帮助我,我是个新手。@MuhammadQuanit了解安德鲁·玄的答案他的解释是完美的嘿,兄弟!该问题已解决,但现在它抛出java.lang.nullpointerexception:用于输入字符串“”“嘿,兄弟!该问题已解决,但现在它抛出java.lang.numberFormatException:用于输入字符串“”…请帮助我,我是个新手。@MuhammadQuanit了解Andrew Hyun的答案他的解释很完美你还需要其他东西也许他的数字是正确的,它可以在开头包含空格,最后也可能导致此错误,因此你可以使用
    str.trim()
    在这种情况下,为了避免出现这种情况,您需要一些其他的东西,可能他的号码是正确的,开头可能包含空格,最后也可能会导致此错误,因此在这种情况下,您可以使用
    str.trim()
    来避免出现这种情况