SQLite for Android
发布时间:2020-12-12 20:15:13 所属栏目:百科 来源:网络整理
导读:通过使用SQLite,可以为每一个应用程序创建独立的关系数据库。 所有的Android数据库都存储在你的设备的/data/data/package_name/database文件夹下。 SQLite是一个关系数据库管理系统,它是非常可靠的,适用于小的电子设备,包括手机。 SQLite只是一个嵌入式的
通过使用SQLite,可以为每一个应用程序创建独立的关系数据库。
所有的Android数据库都存储在你的设备的/data/data/<package_name>/database文件夹下。 SQLite是一个关系数据库管理系统,它是非常可靠的,适用于小的电子设备,包括手机。 SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据的存取。 SQLiteDatabase: android提供的SQLiteDatabase代表一个数据库,在使用时,应用程序必须获得数据库对象,之后就可以进行各种数据库的操作了,在使用数据库的时候要实现访问以及存储的步骤如: 1、获得SQLiteDatabase对象,代表了与数据库的链接,同时也代表了创建或者是打开一个数据库; 2、执行SQL语句来操作数据库; 3、对数据库进行操作【插入、删除、修改等】; 4、关闭SQLiteDatabase链接,回收资源; 打开或者创建数据库:使用SQLiteDatabase提供的静态方法来获得: SQLiteDatabase db=SQLiteDatabase.openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags); SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(String path,int flags); 获得了数据库的对象以后,就可以使用它来操作数据库了,其数据库的操作方法有: execSQL(String sql,Object[] bind);//执行带占位符的SQL语句,也就是where子句的值//execSQL(String sql);//执行SQL语句// insert(String table,String nullColumnHack,contentValues values);//向表中插入数据// update(String table,ContentValues values,String whereClause,String[] whereArgs);//更新数据// delete(String table,String[] whereArgs);//删除数据// Cursor query(String table,String[] columns,String selection,String[] selectionargs,String groupBy,String having,String orderBy);//查询// beginTransaction();//开始事务// endTransaction();//结束事务// 上面的Cursor是游标对象,和数据库中的游标操作类似,它包含了多种功能来导航查询结果,比如移向下一条结果moveToNext(); ContentValues对象用来向数据库表中插入新的行,每一个ContenValues对象都代表一行,所有在插入或者更新的时候都是用ContentValues来封装值进行操作。 下面是具体的例子: public class DatabaseTest extends Activity{ private SQLiteDatabase db; private Cursor cursor; @Override public void oncreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); db=SQLiteDatabase.openOrCreateDatabase("database_path",null); //如果数据库中没有表,那么还必须调用方来创建表,使用execSQL创建// createTable(tableName,allColumnName); //查询数据库中的数据// cursor=db.query("table_name",new String[]{//column_names//},null,null); cursor.moveToNext(); //使用cursor.getXxx()来获得数据库中的数据// //向数据库中插入数据,使用ContentValues来进行封装// ContentValues value=new ContentValues(); value.put("column_name",value); .............. db.insert("table_name",value); } //用于创建数据库表的方法// protected boolean createTeable(String tableName,String[] allColumnName){ try{ db.execSQL(sql,allColumnName); return true; }catch(SQLException t){ return false; } } @Override public void onDestroy(){ super.onDestroy(); if(db!=null && db.isOpen()) db.close(); } } 为了能更好的操作数据库,可以使用数据库的助手类:SQLiteOpenHelper SQLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。一般的用法是创建它的子类,并扩展onCreate和onUpgrade方法; SQLiteOpenHelper常用的方法: synchronized SQLiteDatabase getReadableDatabase();//以读写的方式打开数据库// synchronized SQLiteDataBase getWritableDatabase();//以写的方式打开数据库// abstract void onCreate(SQLiteDatabase db);//第一次创建数据库时调用创建数据库表// abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion);//更新版本时调用// synchronized void close();//关闭数据库// 创建助手类: class DBOpenHelper extends SQLiteOpenHelper{ private String sql="create table table_Name(Column+Column_Distribute)"; public DBOpenHelper(Context context,String name,CursorFactory factory,int version) { super(context,name,version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db,int arg1,int arg2) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS table_Name"); onCreate(db); } } 使用助手类: public class AddActivity extends Activity { private SQLiteDatabase db; private DBOpenHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add); dbHelper=new DBOpenHelper(this,"databaseName",1); db=dbHelper.getWritableDatabase(); //下面就可以操作数据库了,使用db// //查询数据库中的数据// cursor=db.query("databse_name",null); cursor.moveToNext(); //使用cursor.getXxx()来获得数据库中的数据// //向数据库中插入数据// ContentValues value=new ContentValues(); value.put("column_name",value); .............. db.insert("table_name",value); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.add,menu); return true; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |