Android学习之创建和使用数据库
2013-09-21 20:33
344 查看
Android使用的是SQLite数据库系统,为一个应用程序所创建的数据库只能被此应用程序访问,其他应用程序不能访问!
下面的程序片段将说明如何以编程的方式在Android应用程序中创建一个SQLite数据库。对于Android,在一个应用程序中以编程方式创建的SQLite数据库总是存储在/data/data/<pakage_name>/databases文件夹下。
每个类的作用已经做了说明。本例子中创建一个名为MyDB的数据库,包含一个名为contacts的表,这个表有3个列:_id、name和email。
2、以编程的方式使用数据库
操作数据库。
下面的程序片段将说明如何以编程的方式在Android应用程序中创建一个SQLite数据库。对于Android,在一个应用程序中以编程方式创建的SQLite数据库总是存储在/data/data/<pakage_name>/databases文件夹下。
创建数据库辅助类
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { static final String KEY_ROWID = "_id"; static final String KEY_NAME = "name"; static final String KEY_EMAIL = "email"; static final String TAG = "DBAdapter"; static final String DATABASE_NAME = "MyDB"; static final String DATABASE_TABLE = "contacts"; static final int DATABASE_VERSION = 1; static final String DATABASE_CREATE = "create table contacts( _id integer primary key autoincrement, " + "name text not null, email text not null);"; final Context context; DatabaseHelper DBHelper; SQLiteDatabase db; public DBAdapter(Context cxt) { this.context = cxt; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub try { db.execSQL(DATABASE_CREATE); } catch(SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub Log.wtf(TAG, "Upgrading database from version "+ oldVersion + "to "+ newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS contacts"); onCreate(db); } } //open the database public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } //close the database public void close() { DBHelper.close(); } //insert a contact into the database public long insertContact(String name, String email) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NAME, name); initialValues.put(KEY_EMAIL, email); return db.insert(DATABASE_TABLE, null, initialValues); } //delete a particular contact public boolean deleteContact(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" +rowId, null) > 0; } //retreves all the contacts public Cursor getAllContacts() { return db.query(DATABASE_TABLE, new String[]{ KEY_ROWID,KEY_NAME,KEY_EMAIL}, null, null, null, null, null); } //retreves a particular contact public Cursor getContact(long rowId) throws SQLException { Cursor mCursor = db.query(true, DATABASE_TABLE, new String[]{ KEY_ROWID, KEY_NAME, KEY_EMAIL}, KEY_ROWID + "=" + rowId, null, null, null, null, null); if (mCursor != null) mCursor.moveToFirst(); return mCursor; } //updates a contact public boolean updateContact(long rowId, String name, String email) { ContentValues args = new ContentValues(); args.put(KEY_NAME, name); args.put(KEY_EMAIL, email); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" +rowId, null) > 0; } }
每个类的作用已经做了说明。本例子中创建一个名为MyDB的数据库,包含一个名为contacts的表,这个表有3个列:_id、name和email。
2、以编程的方式使用数据库
package com.wshouyou.database; import android.os.Bundle; import android.app.Activity; import android.database.Cursor; import android.view.Menu; import android.widget.Toast; public class DatabaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DBAdapter db = new DBAdapter(this); //add a contact /*db.open(); long id = db.insertContact("junli", "liujl07@126.com"); id = db.insertContact("juan zhan", "mary@autonavi.com"); db.close();*/ //get all contacts /*db.open(); Cursor c = db.getAllContacts(); if (c.moveToFirst()) { do { DisplayContact(c); }while (c.moveToNext()); } db.close();*/ //get a contact /*db.open(); Cursor c = db.getContact(2); if (c.moveToFirst()) DisplayContact(c); else Toast.makeText(this, "No contact found!", Toast.LENGTH_SHORT).show(); db.close();*/ //update contact /*db.open(); if ( db.updateContact(1, "Wei-Meng Lee", "weimenglee@gmail.com") ) Toast.makeText(this, "Update successful!", Toast.LENGTH_SHORT).show(); else Toast.makeText(this, "Update failed!", Toast.LENGTH_SHORT).show(); db.close();*/ //delete a contact db.open(); if (db.deleteContact(1)) Toast.makeText(this, "Delete successful!", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Delete failed!", Toast.LENGTH_LONG).show(); db.close(); } public void DisplayContact(Cursor c) { Toast.makeText(this , "id: "+c.getString(0) + "\n" + "Name: "+c.getString(1) + "\n"+ "Email: "+c.getString(2), Toast.LENGTH_SHORT).show(); } }
操作数据库。
相关文章推荐
- Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)
- Android学习---如何创建数据库,SQLite(onCreate,onUpgrade方法)和SQLiteStudio的使用
- 【android学习】_如何创建一个android下可以使用的数据库
- SQL Server学习笔记1:如何使用软件以及创建第一个数据库
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(2)--创建数据库外部数据源
- Android学习——Android Realm数据库使用指南
- 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表
- 在Android中创建和使用数据库
- Android创建和使用数据库详细指南
- Android创建和使用数据库详细指南
- Android学习_使用Adapter创建ListView
- Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)
- Android创建和使用数据库详细指南(2)
- cocos2d-x学习之旅(五):1.5 使用eclipse编译cocos2d-x示例项目,创建cocos2d-x android项目并部署到真机
- 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表
- Android学习之模拟器上面应用的sdcard的创建使用
- Windows Phone 学习 创建和使用数据库
- [Kotlin&Anko开发Android入门学习笔记]-01使用Kotlin创建Activity活动
- 关于Android sqlite3数据库创建使用内容提供者contentProvider及解析者ContentResolver,观察者ContentResolver案例
- Android开源:数据库ORM框架GreenDao学习心得及使用总结