将nvarchar值'XX'转换为数据类型int时转换失败。在java eclipse中

时间:2013-12-19 03:57:16

标签: java sql-server eclipse

将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();}

                }


            });

2 个答案:

答案 0 :(得分:4)

尝试从

更改SQL语句
select * from inventory where Id=? or Name=?

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

问题是您使用相同的文本字段与IdName进行比较,因此如果您要将 Rohan 输入文本字段,那么尝试将其转换为INT以与Id进行比较,在这种情况下语句将失败。

答案 1 :(得分:0)

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

pst.setInt(1, parsedInt);