sqlite简介:
Google为Andriod的较大的数据处理提供了sqlite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。sqlite具备下列特点:
1.轻量级
使用 sqlite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
2.独立性
sqlite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
3.隔离性
sqlite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
4.跨平台
sqlite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
5.多语言接口
6.安全性
sqlite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
sqlite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
sqliteOpenHelper介绍:
在android平台上要操作sqlite数据库就必须要使用sqliteOpenHelper类。
一个帮助类管理数据库创建和管理,你创建一个子类去实现onCreate(SQLiteDatabase)
,onUpgrade(SQLiteDatabase,int,int)
方法,onOpen(SQLiteDatabase)
可选择性实现.
sqliteOpenHelper作为一个访问sqlite的帮助类,提供两方面的功能
1.getReadableDatabase(),getWritableDatabase()可以获得sqliteDatatbase对象,/对这个对象进行相关操作
2.提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时进行操作
//MysqLiteOpenHelper作为一个访问sqlite的帮助类,提供两方面的功能 //1.getReadableDatabase(),//对这个对象进行相关操作 //2.提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时进行操作 public class MysqLiteOpenHelper extends sqliteOpenHelper { public static final String DATABASE_NAME = "test.db"; public static final String TAG = "MysqLiteOpenHelper"; public MysqLiteOpenHelper(Context context) { this(context,DATABASE_NAME,null,1); } public MysqLiteOpenHelper(Context context,int version) { this(context,version); } // 必须要有这一个构造方法 public MysqLiteOpenHelper(Context context,String name,CursorFactory factory,int version) { super(context,name,factory,version); // TODO Auto-generated constructor stub } // 当数据库第一次创建的时候被调用,// 当调用getReadableDatabase ()或getWritableDatabase 的时候 @Override public void onCreate(sqliteDatabase db) { // TODO Auto-generated method stub Log.d(TAG,"onCreate"); String sql = "create table user(id int,name varchar(20))"; db.execsql(sql); } @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { // TODO Auto-generated method stub Log.d(TAG,"onUpgrade"); } }
主界面上的功能:
public class MainActivity extends Activity { public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main,menu); return true; } public void createDatabase(View view) { MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity.this); // 这一步才会创建数据库,即回调MysqLiteOpenHelper的onCreate方法 dbHelper.getWritableDatabase(); } public void upgradeDatabase(View view) { MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity.this,2); // 这一步才会创建数据库 dbHelper.getWritableDatabase(); } public void insert(View view) { ContentValues cv = new ContentValues(); cv.put("id",1); cv.put("name","zhangsan"); MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity.this,2); // 得到数据库对象 sqliteDatabase db = dbHelper.getWritableDatabase(); db.insert("user",cv); } public void delete(View view) { MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity.this); // 得到数据库对象 sqliteDatabase db = dbHelper.getWritableDatabase(); db.delete("user","id=?",new String[] { "1" }); } public void update(View view) { MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity.this); // 得到数据库对象 sqliteDatabase db = dbHelper.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("name","zhangsanfeng"); // 第一个参数是要更新的表名 // 第二个参数是一个ContentValues对象 // 第三个参数是where子句 db.update("user",cv,new String[] { "1" }); } public void query(View view) { MysqLiteOpenHelper dbHelper = new MysqLiteOpenHelper(MainActivity.this); // 得到数据库对象 sqliteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("user",new String[] { "id","name" },new String[] { "1" },null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); Log.d(TAG,"id:" + id); Log.d(TAG,"name:" + name); } } }