Java com.microsoft.sqlserver.jdbc.SQLServerException:将varchar值“014051452X”转换为数据类型int时,转换失败
这就是当我单击其他表中的行时将触发的函数。这是可行的,但我不断收到以下异常:Java com.microsoft.sqlserver.jdbc.SQLServerException:将varchar值“014051452X”转换为数据类型int时,转换失败,java,sql-server,jdbc,Java,Sql Server,Jdbc,这就是当我单击其他表中的行时将触发的函数。这是可行的,但我不断收到以下异常: public void book_copies_table_clicked(){ try { dtm1.setRowCount(0); int row = dc.book_search_table.getSelectedRow(); Statement s2 = con.createStatement();
public void book_copies_table_clicked(){
try {
dtm1.setRowCount(0);
int row = dc.book_search_table.getSelectedRow();
Statement s2 = con.createStatement();
ResultSet rs1 = s2.executeQuery("select branch_id, copies from book_copies where book_id="+dc.book_search_table.getValueAt(row, 0).toString());
while(rs1.next()){
int branchID = rs1.getInt(1);
String branchID1 = Integer.toString(branchID);
int copies = rs1.getInt(2);
String copies1 = Integer.toString(copies);
dtm1.addRow(new String[] {branchID1,copies1});
}
} catch (SQLException ex) {
Logger.getLogger(implementation_class.class.getName()).log(Level.SEVERE, null, ex);
}
}
还有更多的行。我没有把任何东西从字符串转换成int之类的东西。但我最终还是得到了这些
book_copies表有3列。图书编号:varchar;分支机构id:smallint;副本:smallint
我尝试在函数的catch块中放入一条打印消息,结果打印出来,这意味着它正在捕获一个异常,但我不知道为什么。它作为varchar10存储在我的数据库中的某个地方,无论您是否意识到正在进行int转换。从这里开始…我在退出函数时遇到异常。所有的数据都被完美地打印出来了。有5个分支,while循环完美地循环了5次。014051452X是图书id,存储为varchar。我只是在查询中使用它来检索该书的分支和副本数。我正在对分支id和副本进行转换,因为它们是smallint。得到答案是选择分支id,从book_副本中复制,其中book_id='+dc.book_search_table.getValueAtrow,0.toString+'。错误是我得到了“”。是一个varchar,所以在比较时必须使用
Oct 25, 2014 8:03:31 PM library_management.implementation_class book_copies_table_clicked
SEVERE: null
com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting the varchar value '014051452X' to data type int.