2013-06-05 201 views
0

爲什麼不能使用此代碼?我試圖自動填充我的jtext字段,但它不會讓我選擇名稱字段,如果它不是一個字符串。爲什麼我不能將整數轉換爲字符串?

我試圖將我的p_id轉換爲string,但它仍然不起作用。 這裏是我的代碼:

int row = tablePatient.getSelectedRow(); 
     String Table_click=(tablePatient.getModel().getValueAt(row, 10).toString()); 

     String sql ="select * from patient where p_id='"+Table_click+"'"; 
     pst =conn.prepareStatement(sql); 
     rs=pst.executeQuery(); 
     if(rs.next()){ 

String add10=rs.getString(String.valueOf("p_id")); 
pat_id.setText (add10); 


     } 

**我有其他ADD1,ADD2,但我選擇不顯示它,因爲它會浪費空間

我的錯誤是:

ava.sql.SQLSyntaxErrorException:不支持'INTEGER'和 'CHAR(UCS_BASIC)'之間的比較。類型必須具有可比性。字符串 類型還必須具有匹配的排序規則。如果核對不符, 一個可能的方案是澆鑄操作數迫使他們默認 歸類(例如選擇表名FROM sys.systables WHERE CAST(表名AS VARCHAR(128))= 'T1')

請幫助:)

+0

1.)在查詢中省略'if p_id是你數據庫表中的一個整數。 2.)使用rs.getInt並在您擁有之後將其轉換爲字符串。 – Fildor

+0

你剛纔問這個嗎? http://stackoverflow.com/questions/16930647/converting-an-integer-into-a-string-not-numeric – greedybuddha

+0

@greedybuddha看起來像那樣,但是這個答案並不提供真正的解決方案= \ –

回答

4

使用PreparedStatement S IN的正確方法:

String sql ="select * from patient where p_id=?"; 
pst =conn.prepareStatement(sql); 
pst.setInt(1, Integer.parseInt(Table_click)); 
//in case p_id is a VARCHAR, comment above line and uncomment below line 
//pst.setString(1, Table_click); 
rs=pst.executeQuery(); 
//rest of code... 

而且,這條線是非常糟糕:

String add10=rs.getString(String.valueOf("p_id")); 

String#valueOf另一個字符串就像使用相同的字符串。只需要使用:

String add10=rs.getString("p_id"); 
+0

+1使用'PreparedStatement' – devnull

+0

非常感謝!不幸的是parseString,不起作用...任何提示?它說...找不到符號..等 – user1724891

+0

@ user1724891我的壞。代碼固定。 –

0

query

更改刪除'query

String sql ="select * from patient where p_id="+Table_click;