国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

SQLite在Android中使用注意事項

移動開發 Android
SQLite在Android中使用有一些陷阱,比如模糊查詢的陷阱、cursor.getString(0)方法的陷阱、SimpleCursorAdapter的 _id 陷阱和關于 AutoCompleteTextView 與 SQLite 關聯數據源的陷阱,本文介紹了這些陷阱和相關的解決方法。

1、模糊查詢的陷阱

  1. cursor = db.rawQuery("select * from song where song_title like '?%' ", selectionArgs); 

這行代碼中由于占位符 ? 在單引號內,因此不會被當做占位符,而是對?進行了模糊查找,會產生類似如下報錯:

android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x3418b0

解決方法:

  1. cursor = db.rawQuery("select * from song where song_title like '" + selectionArgs[0] + "%'", selectionArgs); 

2、cursor.getString(0)方法的陷阱

  1. cursor = db.rawQuery("select song_singer from song group by song_singer having count(*)<2 "null); 2 cursor.moveToFirst(); 3 for ( int i= 0; i<cursor.getCount(); i++ ) 4 { 5 str_ge_shou_auto[i] = cursor.getString(0); 6 System.out.println("str_ge_shou_auto[i] is "+str_ge_shou_auto[i]); 7  cursor.moveToNext(); 8 } 9 cursor.close(); 

以上代碼可以正確實現從在database中返回的cursor中讀取數據,但以下代碼會出現問題

  1. cursor = db.rawQuery("select * from song where song_title like '" + selectionArgs[0] + "%'"null); 2 System.out.println(cursor.getString(0)); 

會出現類似這個錯誤:android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

解決方法:

  1. cursor = db.rawQuery("select * from song where song_title like '" + selectionArgs[0] + "%'"null); 2 cursor.moveToFirst(); 3 System.out.println(cursor.getString(0)); 

關鍵就是這句 cursor.moveToFirst();  

當然使用 cursor.getString(0); 方法之后cursor并不會moveToNext

而對于SimpleCursorAdapter而言,則不需先進行cursor.moveToFirst();  

3、SimpleCursorAdapter的 _id 陷阱

使用SimpleCursorAdapter封裝Cursor時要求底層數據表的主鍵列的列名為_id,因為SimpleCursorAdapter只能識別列名為_id的主鍵

以下代碼會報錯  java.lang.IllegalArgumentException: column ‘_id’ does not exist

  1. cursor = db.rawQuery("select song_singer from song where song_singer like '"+selectionArgs[0]+"%' group by song_singer"null); 2 SimpleCursorAdapter simple_adapter = new SimpleCursorAdapter( 3 MusicLookup.this , R.layout.music_lookup_singer_item, cursor 4 , new String[]{"song_singer"5 , new int[]{R.id.song_singer_lookup_singer}); 

解決方法:

  1. cursor = db.rawQuery("select * from song where song_singer like '"+selectionArgs[0]+"%' group by song_singer"null); 2 SimpleCursorAdapter simple_adapter = new SimpleCursorAdapter( 3 MusicLookup.this , R.layout.music_lookup_singer_item, cursor 4 , new String[]{"song_singer"5 , new int[]{R.id.song_singer_lookup_singer}); 

要使用SimpleCursorAdapter,則不要在SQL語句中進行column的選擇,而是在 new SimpleCursorAdapter(...) 的時候進行對需要的column的選擇

4、關于 AutoCompleteTextView 與 SQLite 關聯數據源的陷阱

AutoCompleteTextView的使用需要ArrayAdapter 適配器來提供數據源,一般都使用 new ArrayAdapter<String> 從字符串的對象數組中得到數據構成ArrayAdapter,對于靜態的字符串對象數組來說,這只需初始化時直接寫入數據就行,類似這樣:

  1. private String[] test = {"a","ab","abc"}; 

這樣便不會引起 “元素數<數組長度” 的問題,然而如果像下面這樣:

  1. private String[] test = new String[100]; 2 ...... 3 test[0] = "a"4 test[1] = "ab"5 test[2] = "abc"6 ...... 

這就會引起 “元素數<數組長度” 的問題,雖然不會報錯,但使用

ArrayAdapter<String> array_ge_ming = new ArrayAdapter<String>(MusicLookup.this, android.R.layout.simple_dropdown_item_1line, test);

來初始化ArrayAdapter,并把ArrayAdapter和AutoCompleteTextView關聯后,你會發現,你輸入時并不會有自動匹配。

從SQLite得來的數據是動態的,是不能對字符串對象數組進行事先的靜態初始化的,為了解決這個問題,我使用了一下方法:

  1. private String[] str_ge_ming_auto; //聲明時先不初始化   ......  2 try{  3   cursor = db.rawQuery("select song_title from song", null);  4   cursor.moveToFirst();  5   System.out.println("cursor.getCount() is "+cursor.getCount());  6   str_ge_ming_auto = new String[cursor.getCount()];   //利用從SQLite返回的Cursor對象的getCount()方法得到需要的數組長度  7   for ( int i= 0; i<cursor.getCount(); i++ )  8   {  9   str_ge_ming_auto[i] = cursor.getString(0); 10   System.out.println("str_ge_ming_auto[i] is "+str_ge_ming_auto[i]);  //一個個賦值 11   cursor.moveToNext(); 12   } 13   cursor.close(); 14    15   System.out.println("str_ge_shou_auto finish"); 16   }catch(SQLiteException  se){ 17   db.execSQL("create table song(_id integer primary key autoincrement," + "song_num varchar(5),"  
  2.          + "song_title varchar(20)," + "song_singer varchar(10)," + "song_info varchar(20));"); 18   } 
責任編輯:徐川 來源: OSChina
相關推薦

2009-07-24 13:40:16

使用SilverLig

2009-07-01 02:29:24

臨時表T-SQL

2021-08-26 14:55:55

開發React代碼

2010-02-05 14:13:17

Android平臺

2014-07-01 12:49:06

Android Stu安裝

2010-11-26 16:27:01

MySQL使用變量

2011-07-19 10:16:58

噴墨打印機注意事項

2010-01-18 14:25:19

使用C++Builde

2015-07-29 14:20:30

微信支付注意事項

2012-03-12 16:46:22

NoSQL數據庫

2011-07-28 17:29:22

HBaseShell

2011-04-14 11:28:07

光纖

2012-03-02 10:51:06

JavaJDBC

2010-09-16 09:52:49

CSS display

2010-01-21 11:30:10

2009-12-22 09:48:58

WCF枚舉類型

2009-12-15 17:47:17

VSIP

2011-05-26 11:22:04

SEO

2009-12-23 17:05:35

ADO.NET調用

2010-07-20 13:02:03

SQL Server索
點贊
收藏

51CTO技術棧公眾號

国产精品99久久免费观看| 狠狠色噜噜狠狠狠狠97| www.久久爱.cn| 大伊香蕉精品在线品播放| 日韩乱码在线视频| 色视频在线观看福利| 最新国产精品精品视频| 久久国内精品自在自线400部| 亚洲自拍高清视频网站| 午夜先锋成人动漫在线| 久久在线观看视频| 欧美舌奴丨vk视频| 亚洲精品福利资源站| 久久黄色美女电影| 欧美精品亚洲二区| 最新国产在线观看| 欧美日韩aaa| 午夜毛片在线| 在线综合+亚洲+欧美中文字幕| 欧美色18zzzzxxxxx| 欧美日韩另类字幕中文| 最新亚洲伊人网| 色悠悠久久综合| 亚洲日本高清| 欧美丝袜一区二区| 国产日韩精品在线看| 在线免费不卡电影| 免费不卡视频| 日韩精品亚洲视频| 高清欧美日韩| 欧美激情第6页| 国产麻豆一区二区三区精品视频| 欧美最顶级丰满的aⅴ艳星| 日韩极品一区| 国产精品一区二区三区四区五区| 国产日韩视频| 99亚洲国产精品| 91视频国产资源| 成人网免费视频| 午夜精品久久久久久久99樱桃| 欧美视频综合| 欧美变态tickling挠脚心| 黑人巨大亚洲一区二区久 | 欧美一区二区免费| 特黄毛片在线观看| 欧美精品亚州精品| jizzjizz欧美69巨大| 国产一区免费视频| 国产在线精品一区二区三区不卡| 欧美精品色婷婷五月综合| 亚洲日本成人在线观看| 2021av在线| 国产亚洲精品成人av久久ww| 亚洲aaa级| 欧美精品一区二区三区在线四季 | 亚洲一区二区三区香蕉| 青椒成人免费视频| 粉嫩虎白女毛片人体| 欧美日韩在线一区| 色尼玛亚洲综合影院| 亚洲成a人片综合在线| 尤物在线视频| 亚洲国产成人91精品| 免费看一区二区三区| 成人黄色av播放免费| 免费的成人av| 男女激情网站| 日韩精品极品视频| 欧美综合视频| 六月婷婷激情网| 亚洲成人手机在线| 亚洲www免费| 亚洲一区二区三区四区视频| 国产精品1024| 人成免费电影一二三区在线观看| 亚洲欧美成人网| 首页国产精品| 国产免费成人在线| 日韩欧美一级二级三级久久久| 欧美1区2区3| 日韩av一级大片| 亚洲一区二区偷拍精品| free欧美| 精品一区国产| 亚洲一区中文日韩| 91tv亚洲精品香蕉国产一区| 9a蜜桃久久久久久免费| 中文字幕欧美日韩一区| 国产蜜臀av在线播放| 国产精品久久久久免费a∨大胸| 精彩视频一区二区三区| 精品99又大又爽又硬少妇毛片| 久久免费视频在线| 粉嫩久久99精品久久久久久夜| 成人午夜在线观看视频| 97在线视频国产| 懂色av一区二区三区蜜臀| 麻豆视频在线| 成人免费视频网| 最新热久久免费视频| 九九热这里有精品| 亚洲一区3d动漫同人无遮挡| 在线亚洲+欧美+日本专区| 欧美男人操女人视频| 国产成人永久免费视频| 欧美一区二区三区人| 欧美搞黄网站| 最近中文字幕在线| 国产ts人妖一区二区三区| 国产日韩欧美电影| 日韩美女在线| 香港三级日本三级a视频| 精品久久久久一区| 国产欧美大片| 在线国产91| 国产91社区| 91福利在线免费观看| 日本黄色精品| 最近最新mv在线观看免费高清| 国产精品吹潮在线观看| 国产精品护士白丝一区av| 久久久久久久性潮| 国产一二三四五| 日韩美女视频在线| 日本三级亚洲精品| 国产一区二区三区毛片| 午夜在线视频播放| 91精品久久久久久蜜桃| 欧美日韩在线视频首页| 一区二区影院| 成人高清免费观看mv| 国产精品高清一区二区三区| 欧美视频13p| 亚洲乱码在线| 在线看免费av| 日韩福利二区| 亚洲女人天堂色在线7777| 精品一二线国产| 欧美日韩尤物久久| 午夜精品久久久久久久无码| 久久综合免费视频| 国产日产亚洲精品系列| 欧美黑人做爰爽爽爽| 麻豆影视在线观看| 国产精品区一区| 精品国产一区二区在线观看| 狠狠狠色丁香婷婷综合久久五月| 天天免费亚洲黑人免费| 日韩av一二三四区| 国产成人高清激情视频在线观看| 欧美日韩黄色大片| 亚洲专区免费| 成人免费黄色| 日本桃色视频| 国产精品亚洲不卡a| 日韩精品一区二区在线| 国产精品 欧美精品| 日本成人手机在线| 中文字幕在线观看第一页| 久久精品综合一区| 中国人与牲禽动交精品| 国产精品麻豆一区二区| 欧美高清一区| 国精产品一区二区三区有限公司 | 欧美乱大交xxxxx| 亚洲黄网站在线观看| 欧美特黄一区| 色在线视频观看| 99re在线视频播放| 不卡在线一区二区| 国产专区在线播放| 三年中文高清在线观看第6集 | 91久久精品在线| 日韩免费视频一区二区| 国产日产欧美一区二区三区| 天天做天天爱天天爽综合网| 91超碰在线播放| 黄网站免费入口| 日韩欧美视频第二区| 国语自产精品视频在线看抢先版图片| 色素色在线综合| 91在线观看下载| 国产精品a级| 亚洲国产一区二区三区网站| 国产免费av在线| 精品无码国产一区二区三区av| 国产精品久久久久99| 亚洲国产天堂久久综合网| 亚洲人午夜精品天堂一二香蕉| 久久久久国产精品一区二区| 国产天堂av| 亚洲精品成人三区| 91成品人片a无限观看| 7777精品伊人久久久大香线蕉超级流畅 | 一区福利视频| 精品一区二区三区中文字幕 | 亚洲h动漫在线| 国产一区二区三区国产| 日韩欧美国产精品综合嫩v| 素人一区二区三区|