SQLite for Android

本文介绍了如何使用SQLite为Android应用创建独立的关系数据库,包括数据库的打开、创建、操作及助手类SQLiteOpenHelper的使用。重点展示了如何通过SQLiteDatabase进行数据库的增删改查操作,并提供了使用SQLiteOpenHelper管理数据库创建和版本更新的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过使用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,SQLiteDatabase.CursorFactory factory,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 whereClause,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,null,null,null);
	 cursor.moveToNext();
	//使用cursor.getXxx()来获得数据库中的数据// 


	//向数据库中插入数据,使用ContentValues来进行封装//
	ContentValues value=new ContentValues();
	value.put("column_name",value);
	..............
	db.insert("table_name",null,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, null, 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",null,1);
		db=dbHelper.getWritableDatabase();
		//下面就可以操作数据库了,使用db//


		//查询数据库中的数据//
		cursor=db.query("databse_name",new String[]{//column_names//},null,null,null,null,null);
		 cursor.moveToNext();
		//使用cursor.getXxx()来获得数据库中的数据// 


		//向数据库中插入数据//
		ContentValues value=new ContentValues();
		value.put("column_name",value);
		..............
		db.insert("table_name",null,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;
	}


}















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值