Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android使用sqlite數據庫的使用

Android使用sqlite數據庫的使用

編輯:關於Android編程

移動端Android開發,我們使用的是sqlite數據庫,這是一個輕量級的數據庫,我們在使用的時候,甚至不想mysql等數據庫一樣加載驅動啊,在androidsdk中,都已經幫我們做好了,我們只需要用就好了,下面介紹一下使用方法,     首先,我們需要建一個類來繼承SQLiteOpenHelper,並重寫PersonSQLiteOpenHelper與oncreate方法即可,前者是建立一個的名字,後者是建立數據庫結構的腳本,這兩個方法會在數據庫第一次創建的時候,調用。建好了,就不再調用了。       /**      * 數據庫的構造方法,用來定義數據庫的名稱,數據庫的查詢的結果集,數據庫版本。      * @param context      */     //factory ,游標工廠,設置位null,version數據庫版本。     public PersonSQLiteOpenHelper(Context context) {         super(context, "person.db", null, 1);     }       /**      * 數據庫第一次創建的時候,調用的方法      * db:被創建的數據,      */     @Override     public void onCreate(SQLiteDatabase db) {                   //初始化數據庫的表結構。         db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))");     }     數據庫建好了,我們接下來要實現數據庫的曾刪改查的一些操作了,這時我們可以選擇sql腳本或者google工程師封裝好的api進行          public class PersonDao {     private PersonSQLiteOpenHelper helper;     public PersonDao(Context context){         helper = new PersonSQLiteOpenHelper(context);     }           public void add(String name,String number){         SQLiteDatabase db = helper.getWritableDatabase();         db.execSQL("insert into person (name,number) values (?,?)",new Object[]{name,number});     //  db.execSQL(sql, bindArgs)                   db.close();     }           public boolean find(String name){         SQLiteDatabase db = helper.getReadableDatabase();         Cursor cursor = db.rawQuery("select * from person where name = ?", new String[]{name});         //默認的結果集是指到第一個行,是空的,         boolean result = cursor.moveToNext();         cursor.close();         db.close();         return result;     }     //修改number     public void update(String name,String number){         SQLiteDatabase db = helper.getReadableDatabase();         db.execSQL("update person set number =? where name = ?",new Object[]{number,name});         db.close();     }     public void delete(String name){         SQLiteDatabase db = helper.getReadableDatabase();         db.execSQL("delete from person where name = ?", new Object[]{name});     }           public List<Person> findAll(){         SQLiteDatabase db = helper.getReadableDatabase();         Cursor cursor = db.rawQuery("select * from person", null);         List<Person> persons = new ArrayList<Person>();                   while(cursor.moveToNext()){             //0 //          int id = cursor.getInt(0);             int id = cursor.getInt(cursor.getColumnIndex("id"));             String name = cursor.getString(1);             String number = cursor.getString(2);             Person p = new Person(id, name, number);             persons.add(p);         }                   cursor.close();         db.close();         return persons;     }       }         public class PersonDaoApi {     private PersonSQLiteOpenHelper helper;     public PersonDaoApi(Context context){         helper = new PersonSQLiteOpenHelper(context);     }           public long add(String name,String number){         SQLiteDatabase db = helper.getWritableDatabase();         //db.execSQL("insert into person (name,number) values (?,?)",new Object[]{name,number});         ContentValues values = new ContentValues();         values.put("name", name);         values.put("number", number);         //返回結果>-1,表示成功的。         long result = db.insert("person", null, values);         db.close();         return result;     }           public boolean find(String name){         SQLiteDatabase db = helper.getReadableDatabase();         //Cursor cursor = db.rawQuery("select * from person where name = ?", new String[]{name});         //db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy)     //  columes=null,反悔所有列。         Cursor cursor = db.query("person", null, "name=?", new String[]{name}, null, null, null);                   //默認的結果集是指到第一個行,是空的,         boolean result = cursor.moveToNext();         cursor.close();         db.close();         return result;     }     //修改number     public int update(String name,String number){         SQLiteDatabase db = helper.getReadableDatabase();         //db.execSQL("update person set number =? where name = ?",new Object[]{number,name});         ContentValues values = new ContentValues();         values.put("number", number);                   //影響多少行,         int row = db.update("person", values, "name=?", new String[]{name});         db.close();         return row;     }     public int delete(String name){         SQLiteDatabase db = helper.getReadableDatabase();     //  db.execSQL("delete from person where name = ?", new Object[]{name});         //影響的行數,》0 及成功         int row = db.delete("person", "name=?", new String[]{name});         db.close();         return row;     }           public List<Person> findAll(){         SQLiteDatabase db = helper.getReadableDatabase();         //Cursor cursor = db.rawQuery("select * from person", null);                   Cursor cursor = db.query("person", new String[]{"name", "id", "number"}, null, null, null,null, null);                   List<Person> persons = new ArrayList<Person>();                   while(cursor.moveToNext()){             //0 //          int id = cursor.getInt(0);             int id = cursor.getInt(cursor.getColumnIndex("id"));             String name = cursor.getString(cursor.getColumnIndex("name"));             String number = cursor.getString(cursor.getColumnIndex("number"));             Person p = new Person(id, name, number);             persons.add(p);         }                   cursor.close();         db.close();         return persons;     }       }     數據庫建好後,在哪裡呢,我們怎樣找到呢?     數據庫建好後,存放在Android目錄的/data/data/程序包名/databases 目錄下,我們打開後,就可以剛才建的數據庫了,把這個.db文件導出,用sqlitemanager(mac),或者sqlitexploer(windows),就可以打開這個數據庫進行查看了,     但是/data/data/程序包名/databases 這個目錄由於權限的控制,我們也只能是在模擬器中能打開,真機調試的時候,是打不開的,那我們怎麼進行使用呢,   這時我們可以使用adb指令,來使用,首先在終端中是可以打開這個目錄的,所以我們先進入這個目錄,比如我們執行     # cd /data/data/com.ftf.db/databses # sqlite3 person.db     就會發現,不再是adb模式下的指令了,而變成sql指令的形式了,而這是和mysql一樣的,這時我們就可以相關sql語句的書寫了。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved