日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > android小功能實現之SQLite數據庫的基本操作

android小功能實現之SQLite數據庫的基本操作

來源:程序員人生   發布時間:2015-03-25 11:47:49 閱讀次數:3623次


創建1個Android工程

1 新建數據庫


1 新建1個類DBOpenHelper

內容以下:

import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { // 數據庫保持位置<包>/databases super(context, name, factory, version); } @Override // 數據庫第1次被創建時調用 public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE person(id integer primary key autoincrement, name varchar(20))"); } @Override // 數據庫文件的版本號產生變更時調用 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL"); } }

onCreate函數在數據庫創建時調用;
onUpgrade在數據庫版本號version產生變化時調用。

2 測試
修改MainActivity.java代碼以下:

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int version = 1; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); }

此時在data文件夾中可以看到test.db文件如圖:

打開可以看到:

打開person:

修改version的值:
int version = 2;

再次查看test.db的內容:

2 數據庫的基本操作


1 新建1個類Person類


用于保存對象數據,內容以下:

public class Person { private Integer id; private String name; private String phone; public Person(){ } public Person(String name, String phone) { this.name = name; this.phone = phone; } public Person(int id, String name, String phone) { this.id = id; this.name = name; this.phone = phone; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + ''' + ", phone='" + phone + ''' + '}'; } }



2 新建1個類PersonService類

用于對數據進行操作,內容以下:

import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.List; public class PersonService { private DBOpenHelper dbOpenHelper; public PersonService(Context context) { int version = 2; this.dbOpenHelper = new DBOpenHelper(context, "test.db", null, version); } // 增 public void save(Person person){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.execSQL("insert into person(name, phone) values(?, ?)", new Object[]{person.getName(), person.getPhone()}); } // 刪 public void delete(Integer id){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.execSQL("delete from person where id=?", new Object[]{id}); } // 改 public void update(Person person){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.execSQL("update person set name=?,phone=? where id=?", new Object[]{person.getName(), person.getPhone(), person.getId()}); } // 查 public Person find(Integer id){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{id.toString()}); if (cursor.moveToFirst()){ int personId = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); return new Person(personId, name, phone); } cursor.close(); return null; } // 分頁獲得記錄,跳過前offset條記錄,查找maxResult條記錄 public List<Person> getScrollData(int offset, int maxResult){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person order by id asc limit ?,?", new String[]{String.valueOf(offset), String.valueOf(maxResult)}); List<Person> persons = new ArrayList<Person>(); while (cursor.moveToNext()){ int personId = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); persons.add(new Person(personId, name, phone)); } cursor.close(); return persons; } // 獲得記錄條數 public long getCount(){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select count(*) from person",null); cursor.moveToFirst(); long res = cursor.getLong(0); cursor.close(); return res; } }



3 測試添加數據

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); Person person = new Person("寒風", "1596262XXXX"); service.save(person); }

再次查看test.db的內容:

4 測試查找數據


protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); /* Person person = new Person("寒風", "1596262XXXX"); service.save(person); */ Person p = service.find(1); Log.i("PersonService", p.toString()); }


注釋掉之前添加數據的代碼,講查詢出的數據打印到logcat,結果以下:


5 測試更新數據

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); /* Person person = new Person("寒風", "1596262XXXX"); service.save(person); */ Person p = service.find(1); p.setName("丿寒灬風丨"); service.update(p); Person p1 = service.find(1); Log.i("PersonService", p1.toString()); }



修改了名稱,并更新到數據庫,再次履行查詢結果如圖:

注意,前1條是上1次輸出的結果。


5 測試獲得記錄條數


protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); /* Person person = new Person("寒風", "1596262XXXX"); service.save(person); */ /* Person p = service.find(1); p.setName("丿寒灬風丨"); service.update(p); Log.i("PersonService", p.toString()); */ Log.i("PersonService","count:"+ String.valueOf(service.getCount())); }


結果如圖:


5 測試分頁方法


5.1 添加多條測試數據

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); for (int i=0; i<20;++i) { Person person = new Person("寒風", "1596262XXX"+i); service.save(person); } /* Person p = service.find(1); p.setName("丿寒灬風丨"); service.update(p); Log.i("PersonService", p.toString()); */ // Log.i("PersonService","count:"+ String.valueOf(service.getCount())); }

查看test.db的內容:

5.2 測試刪除方法

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); /* for (int i=0; i<20;++i) { Person person = new Person("寒風", "1596262XXX"+i); service.save(person); } */ /* Person p = service.find(1); p.setName("丿寒灬風丨"); service.update(p); Log.i("PersonService", p.toString()); */ // Log.i("PersonService","count:"+ String.valueOf(service.getCount())); List<Person> persons = service.getScrollData(0, 5); for(Person person:persons){ Log.i("PersonService", person.toString()); } Log.i("PersonService","-------------------------"); List<Person> persons1 = service.getScrollData(5, 5); for(Person person:persons1){ Log.i("PersonService", person.toString()); } }


結果如圖:


6 測試刪除方法


protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 創建數據庫 int version = 2; DBOpenHelper dbOpenHelper = new DBOpenHelper(getApplicationContext(), "test.db", null, version); dbOpenHelper.getWritableDatabase(); // 數據庫基本操作 PersonService service = new PersonService(getApplicationContext()); /* for (int i=0; i<20;++i) { Person person = new Person("寒風", "1596262XXX"+i); service.save(person); } */ /* Person p = service.find(1); p.setName("丿寒灬風丨"); service.update(p); Log.i("PersonService", p.toString()); */ // Log.i("PersonService","count:"+ String.valueOf(service.getCount())); /* List<Person> persons = service.getScrollData(0, 5); for(Person person:persons){ Log.i("PersonService", person.toString()); } Log.i("PersonService","-------------------------"); List<Person> persons1 = service.getScrollData(5, 5); for(Person person:persons1){ Log.i("PersonService", person.toString()); } */ service.delete(1); }

查看test.db的內容:



3 使用封裝方法實現


SQLiteDatabase類中對SQL語句做了簡單的封裝,每一個方法對以下:

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.List; public class PersonService { private DBOpenHelper dbOpenHelper; public PersonService(Context context) { int version = 2; this.dbOpenHelper = new DBOpenHelper(context, "test.db", null, version); } // 增 public void save(Person person){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.execSQL("insert into person(name, phone) values(?, ?)", new Object[]{person.getName(), person.getPhone()}); } public void save1(Person person){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", person.getName()); values.put("phone", person.getPhone()); db.insert("person",null, values); } // 刪 public void delete(Integer id){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.execSQL("delete from person where id=?", new Object[]{id}); } public void delete1(Integer id){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.delete("person", "id=?",new String[]{id.toString()}); } // 改 public void update(Person person){ SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); db.execSQL("update person set name=?,phone=? where id=?", new Object[]{person.getName(), person.getPhone(), person.getId()}); } public void update1(Person person) { SQLiteDatabase db = this.dbOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", person.getName()); values.put("phone", person.getPhone()); db.update("person",values,"id=?", new String[]{person.getId().toString()}); } // 查 public Person find(Integer id){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{id.toString()}); if (cursor.moveToFirst()){ int personId = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); return new Person(personId, name, phone); } cursor.close(); return null; } public Person find1(Integer id) { SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); //db.query("person", null, "id=?", new String[]{id.toString()},null, null,null); Cursor cursor = db.query("person", new String[]{"id","name","phone"}, "id=?", new String[]{id.toString()},null, null,null); if (cursor.moveToFirst()){ int personId = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); return new Person(personId, name, phone); } cursor.close(); return null; } // 分頁獲得記錄 public List<Person> getScrollData(int offset, int maxResult){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person order by id asc limit ?,?", new String[]{String.valueOf(offset), String.valueOf(maxResult)}); List<Person> persons = new ArrayList<Person>(); while (cursor.moveToNext()){ int personId = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); persons.add(new Person(personId, name, phone)); } cursor.close(); return persons; } public List<Person> getScrollData1(int offset, int maxResult){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("person", null, null,null,null,null,"id asc", offset+","+maxResult); new String[]{String.valueOf(offset), String.valueOf(maxResult)}); List<Person> persons = new ArrayList<Person>(); while (cursor.moveToNext()){ int personId = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); persons.add(new Person(personId, name, phone)); } cursor.close(); return persons; } // 獲得記錄條數 public long getCount(){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select count(*) from person",null); cursor.moveToFirst(); long res = cursor.getLong(0); cursor.close(); return res; } public long getCount1(){ SQLiteDatabase db = this.dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("person", new String[]{"count(*)"},null,null,null,null,null); cursor.moveToFirst(); long res = cursor.getLong(0); cursor.close(); return res; } }



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久久夜夜夜 | 看一级大毛片 | 99福利| 成人高清视频免费观看 | 国产精品久久久久久久久久免费动 | 精品视频在线看 | 黄色带一级片 | 欧美日韩电影在线观看 | 91精品国产日韩91久久久久久 | 国产精品久久久久久久久久久新郎 | 久久久噜噜噜久久中文字幕色伊伊 | 亚洲成人在线网站 | 欧美日韩在线影院 | 欧美日韩免费网站 | 亚洲九九 | 欧美一级毛片免费网站 | 涩涩视频 | 亚洲免费视频观看 | 国产精品成人一区二区三区夜夜夜 | 嫩草影视在线观看 | 激情在线视频 | 亚洲激情一区 | 另类专区亚洲 | 一区二区三区91 | 日韩中文字幕av在线 | 麻豆传媒免费观看 | 精品国产一 | 日韩精品一区二区三区中文在线 | 一区二区91| 国产乱码精品一区二区三 | 在线91av | 成人动漫一区二区三区 | 国产中文字幕在线观看 | 久久久久久久久久综合 | 国产精品一区二区三区久久久 | 新电影天堂 | 男女的隐私视频网站 | 中文字幕视频 | 91久久国产综合久久91猫猫 | 久久精品国产一区 | 中文字幕精品久久久久 |