【问题标题】:Conversion failed when converting the nvarchar value 'XX' to data type int. in java eclipse将 nvarchar 值“XX”转换为数据类型 int 时转换失败。在日食中
【发布时间】:2013-12-19 03:57:16
【问题描述】:

将 nvarchar 值“XX”转换为数据类型 int 时转换失败。我有这些错误,我不知道该怎么办。请帮我。谢谢。 :D

   btnNewButton_3.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    String value1=textField_7.getText();
                     try{

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                         String connectionURL = "jdbc:sqlserver://;Database='';user='';password='';";
                         Connection con = DriverManager.getConnection(connectionURL);
                       PreparedStatement pst =null;
                            //Statement stmt=con.createStatement();

       //PreparedStatement pst=con.prepareStatement("select * from inventory where Id=? or Name=? ");
                        String sql ="select * from inventory where Id=? or Name=? ";
                        pst=con.prepareStatement(sql);
                        pst.setString(1, textField_7.getText());
                        pst.setString(2, textField_7.getText());


                     ResultSet rs = pst.executeQuery();
                     if(value1.equals("")){
                          reloadData();
                          model.fireTableDataChanged();
                          JOptionPane.showMessageDialog(null,"Please Enter a Name or Id of the Item","ERROR",JOptionPane.ERROR_MESSAGE);

                      }else{  


                                  table.setModel(DbUtils.resultSetToTableModel(rs));
                  }

                           }


                     catch(Exception e1){e1.printStackTrace();}

                }


            });

【问题讨论】:

    标签: java sql-server eclipse


    【解决方案1】:

    尝试更改 SQL 语句

    select * from inventory where Id=? or Name=?
    

    select * from inventory where CAST(Id AS NVARCHAR(50))=? or Name=?
    

    问题是您使用相同的文本字段来比较 IdName,所以如果您要在文本字段中输入 Rohan,它会尝试转换它到 INT 以与 Id 进行比较,在这种情况下,语句将失败。

    【讨论】:

      【解决方案2】:

      假设您的 Id 列是完整的,您会收到此错误,因为您试图为其分配一个字符串。如果是field is integral,则将textField解析为int然后使用setInt

      pst.setInt(1, parsedInt);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-17
        • 2011-08-29
        • 2015-06-20
        • 2016-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多