另外,上述示例对记录的操作是使用execSQL()方法通过原生的SQL语句进行的,当然也可以使用上面介绍的SQLiteDatabase常用的方法来操作,如insert()、delete()、update()、query()等方法。但是需要注意的是,以插入记录举例,当数据量不大时,通过execSQL()使用SQL语句进行插入与使用insert()方法插入记录的效率是差不多的,但是如果数据量比较大,那么使用前者比使用后者的效率明显高出很多。
SQLiteOpenHelper
这个类为SQLiteDatabase的帮助类,主要用于管理数据库的创建与版本更新。SQLiteHelper是一个抽象类,一般通过创建一个继承自它的子类并重写onCreat()和onUpgrade()方法进行使用。
-onCreat(SQLiteDatabase db) //首次创建数据库时调用,一般用于建表等操作。
-onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)//当升级数据库版本时调用
下面是使用SQLiteOpenHelper的一个简单示例:
创建一个继承自SQLiteOpenHelper的子类
public class SQLiteHelper extends SQLiteOpenHelper { /** * context:上下文对象 * name:数据库名 */ public SQLiteHelper(Context context, String name) { super(context, name, null, 1); } //首次创建数据库的时候调用,一般进行建表或某些初始化的操作 @Override public void onCreate(SQLiteDatabase db) { //建表 db.execSQL("create table if not exists userTb (" + "_id integer primary key," + "name text not null,age integer not null," + "sex text not null)"); } //当数据库版本升级时自动调用 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
然后就可以通过SQLiteHelper的实例获取一个SQLiteDatabase对象,进而对数据库进行一系列的操作了。
public class MainActivity2 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //创建一个SQLiteHelper对象 SQLiteHelper helper = new SQLiteHelper(MainActivity2.this,"stu.db"); //使用getWritableDatabase()或getReadableDatabase()方法获得SQLiteDatabase对象 SQLiteDatabase db = helper.getWritableDatabase(); //插入记录 db.execSQL("insert into userTb (name,age,sex) values ('张三',18,'女')"); db.execSQL("insert into userTb (name,age,sex) values ('李四',19,'男')"); db.execSQL("insert into userTb (name,age,sex) values ('王五',20,'女')"); //获取游标对象 Cursor queryResult = db.rawQuery("select * from userTb", null); if (queryResult != null) { //打印所有记录 while (queryResult.moveToNext()) { Log.i("info", "id: " + queryResult.getInt(queryResult.getColumnIndex("_id")) + " 姓名: " + queryResult.getString(queryResult.getColumnIndex("name")) + " 年龄: " + queryResult.getInt(queryResult.getColumnIndex("age")) + " 性别: " + queryResult.getString(queryResult.getColumnIndex("sex"))); } //关闭游标对象 queryResult.close(); } //关闭数据库 db.close(); } }
标签:SQLite
相关阅读 >>
Sqlitemanager怎么激活Sqlite数据库管理软件激活图文教程
python实现将Sqlite中的数据直接输出为cvs的方法示例
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。