1. 程式人生 > >NumberFormatException: Invalid int類型不匹配異常——使用SQL數據庫查詢語句select * from blacknumber order by _id desc limit ?,20;出現

NumberFormatException: Invalid int類型不匹配異常——使用SQL數據庫查詢語句select * from blacknumber order by _id desc limit ?,20;出現

rom add ray 修改 java turn 技術分享 data color

異常:類型不匹配


05-06 08:12:38.151: E/AndroidRuntime(14904): java.lang.NumberFormatException: Invalid int: "18600000099"

05-06 08:12:38.151: E/AndroidRuntime(14904): at com.itheima.mobilesafe74.activity.BlackNumberActivity$Myadapter.getView(BlackNumberActivity.java:122)

 1 public List<BlackNumberInfo> find(int index)
2 { 3 // 先要拿到數據庫對象 4 SQLiteDatabase db = blackNumberOpenHelper.getWritableDatabase(); 5 // db.rawQuery()中第一個參數就是sql語句,第二個參數是?對應的值 6 Cursor cursor = db.rawQuery("select * from blacknumber order by _id desc limit ?,20;", new String[]{index+""}); 7 // 為了一次性拿到所有查到的字段,創建一個集合封裝
8 List<BlackNumberInfo> blackNumberList = new ArrayList<BlackNumberInfo>(); 9 while (cursor.moveToNext()) 10 { 11 // 將查詢的兩個字段封裝到一個java bean中 12 BlackNumberInfo blackNumberInfo = new BlackNumberInfo(); 13 blackNumberInfo.phone = cursor.getString(0);
14 blackNumberInfo.mode = cursor.getString(1);
15 // 每次循環都將這個Javabean封裝到集合中 16 blackNumberList.add(blackNumberInfo); 17 } 18 cursor.close(); 19 db.close(); 20 return blackNumberList; 21 }

代碼第六行

select * from blacknumber
代表查詢所有的字段

技術分享

數據庫中的字段有_id,phone,mode三個
所以當調用代碼13,14行
blackNumberInfo.phone = cursor.getString(0);
blackNumberInfo.mode = cursor.getString(1);
0對應的其實是_id而不是phone
1對應的其實是phone而不是mode
所以出現問題
修改SQL查詢語句解決這個問題:
第六行改為
 Cursor cursor = db.rawQuery("select phone,mode from blacknumber order by _id desc limit ?,20;", new String[]{index+""});
即可




NumberFormatException: Invalid int類型不匹配異常——使用SQL數據庫查詢語句select * from blacknumber order by _id desc limit ?,20;出現