将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();}
}
});
答案 0 :(得分:4)
尝试从
更改SQL语句select * from inventory where Id=? or Name=?
到
select * from inventory where CAST(Id AS NVARCHAR(50))=? or Name=?
问题是您使用相同的文本字段与Id
和Name
进行比较,因此如果您要将 Rohan 输入文本字段,那么尝试将其转换为INT
以与Id
进行比较,在这种情况下语句将失败。
答案 1 :(得分:0)
假设您的Id列是完整的,您会收到此错误,因为您尝试为其分配字符串。如果是field is integral,则将textField解析为int,然后使用setInt
pst.setInt(1, parsedInt);