編寫一個Android平台遇到的所有問題(一)——查詢sqlite資料庫時遇到的問題

來源:互聯網
上載者:User

標籤:

本人處於本科畢業階段,畢業設計要做一個安卓平台,對於java還是小白的我確實有點難度,不過在做的過程中還是收穫很多,現在希望把自己在這個過程中遇到的各個問題和朋友們分享,大神們不喜勿噴,由於畢業設計要做半年,所以接下來的這個系列差不多也要寫將近半年吧,我盡量堅持。

下面就開始吧!!

一.查詢sqlite資料庫時遇到的問題

相必對於所有的Android開發人員來說,sqlite一定不陌生,今天我第一次接觸就被她虐了40分鐘,真是慚愧。關於資料庫的其他動作我就不多說了,大家一定都很清楚,我著重說一下在查詢資料庫時遇到的問題。

查詢資料庫一半我們用的都是cursor這個類,關於這個類我個人感覺她有點像C語言中的指標,用不好就出問題,被CursorIndexOutOfBoundsException虐過的人在心裡默默的答一下到。一般來說這個問題都是你沒有把cursor對象指向表的第一行。解決方案也很簡單

Cursor c = db.query(table,columns,selection,selectionArgs,null,null,null);    if(c.moveToFirst())    {            //讀資料代碼    }    else{    System.out.println("no record");    }

  註:上述代碼只是一個範例程式碼,沒有寫完全,特此說明,本人開始的時候也是看到網上的代碼就直接拿過來用後來發現用不了才知道沒寫完全,以後My Code除了完整的方法代碼和程式碼,別的只作樣本,如果大家想用(我有點厚臉皮,哈哈),還要自己添加一下。

繼續回到正題,今天我遇到的問題是關於moveToFirst()和move(int offset)的配合使用,直接上代碼說明:

public String queryData_query(SQLiteDatabase db,String table,String[]columns,String selection,String[] selectionArgs){    Cursor c = db.query(table,columns,selection,selectionArgs,null,null,null);              //查詢並獲得遊標    for(int i=0;i<c.getCount();i++)    {    if(c.moveToFirst())//判斷遊標是否為空白    {    c.move(i);//移動到指定記錄        username = c.getString(c.getColumnIndex("username"));        System.out.println("query------->username="+username);    }    else{    System.out.println("no record");    break;    }            }       c.close();    return username;    }

  move這個方法給我很大困擾,大家注意她的參數是offset,即位移值,說明下一個cursor的位置=當前cursor的位置+offset,而不是網上有的地方說的代表表的某一行,而且要用這個方法的話就要保證起始地址不變,即保證c.moveToFirst()在每次變位移值的時候都要執行一次,這個有點像單片機中基址+變址的定址方式。

編寫一個Android平台遇到的所有問題(一)——查詢sqlite資料庫時遇到的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.