2013-12-19 140 views
2

將nvarchar值'XX'轉換爲數據類型int時轉換失敗。即時通訊有這些錯誤,我不知道如何處理它。請幫幫我。謝謝。 :d將nvarchar值「XX」轉換爲數據類型int時轉換失敗。 in java eclipse

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

       } 


      }); 

回答

4

嘗試從

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

改變SQL語句

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

的問題是,您使用的是相同的文本字段來比較兩者IdName,所以如果您要在文本字段中輸入Rohan,它會嘗試將其轉換爲INT以比較t o Id,在這種情況下,該陳述將失敗。

0

假設你的Id列是整數,你會得到這個錯誤,因爲你試圖給它分配一個字符串。如果field is integral,將textField解析爲int,然後使用setInt

pst.setInt(1, parsedInt); 
相關問題