Android 集成了SQLite数据库

Android在运行时集成了SQLite , 所以每个Android应用程序都可以使用SQLite数据库。

数据库存放的位置:data/<项目文件夹>/databases/

第一步:创建数据库
Android 中提供SQLiteOpenHelper类帮助创建一个数据库,继承该类可以轻松的创建SQLite数据库;
注意:SQLiteOpenHelper的子类至少要实现三个方法:
* 带参的构造方法;
* onCreate();
* onUpgrag();

java代码如下:

package com.example.sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/* SQLiteOpenHelper的子类, 用于操作数据库   *  * SQLiteOpenHelper 是一个辅助类,用来管理数据库的创建和版本,提供两方面的功能; *  * 第一:getReadableDatabase() 、 getWriteableDatabase() 可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作; *  * 第二:提供onCreate() ; onUpgrade() 两个回调函数,允许我们再创建和删除数据库时,进行自己的操作; *  * */public class MySQLiteOpenHelper extends SQLiteOpenHelper {/* 构造方法,调用父类SQLiteOpenHelper的构造函数 *//* 参1:上下文环境;参2:数据库名称(以.db结尾) ; 参3:游标工厂(默认为null) ; 参4:代表使用数据库模型版本的证书*/public MySQLiteOpenHelper(Context context, String name,CursorFactory factory, int version) {super(context, name, factory, version);}/* 根据需要对SQLiteDatabase 的对象填充表和数据初始化 *//* 该方法时在第一次创建的时候执行,实际上时第一次得到SQLiteDatabase对象的时侯才会调用这个方法 */public void onCreate(SQLiteDatabase db) {// TODO 创建数据库后,对数据库的操作}/* 将数据库从旧的模型转换为新的模型 *//* 参1:对象   ; 参2:旧版本号 ; 参3:新版本号 */public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO 更改数据库版本的操作}/* 打开数据库执行的函数 */public void onOpen(SQLiteDatabase db) {// TODO 每次成功打开数据库后首先被执行super.onOpen(db);}}

案例代码如下:
package com.example.sqlite;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {/* 设置表相关信息的常量 */final String MYTAB = "t_score";final String MYNAME ="name";final String MYSCORE = "score";MySQLiteOpenHelper helper;private Button selectData,createDatabase,createTable,insertData,updateData,deleteData;/* 获取组建对象 */public void init(){selectData = (Button) findViewById(R.id.selectData);createDatabase = (Button) findViewById(R.id.createDatabase);createTable = (Button) findViewById(R.id.createTable);insertData = (Button) findViewById(R.id.insertData);updateData = (Button) findViewById(R.id.updateData);deleteData  = (Button) findViewById(R.id.deleteData);}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/* 初始化组件对象 */init();/* 创建数据库 */createDatabase.setOnClickListener(new OnClickListener() {public void onClick(View v) {/* 创建一个MySQLiteOpenHelper,该语句执行是不会创建或打开连接的 */helper = new MySQLiteOpenHelper(MainActivity.this, "mydb.db", null, 1);/* 调用MySQLiteOpenHelper的getWriteableDatabase()方法,创建或者打开一个连接 */SQLiteDatabase sqlitedatabase = helper.getWritableDatabase();Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show();}});/* 创建表 */createTable.setOnClickListener(new OnClickListener() {public void onClick(View v) {/* 创建一个MySQLiteOpenHelper,该语句执行是不会创建或打开连接的 */helper = new MySQLiteOpenHelper(MainActivity.this, "mydb.db", null, 1);/* 获取一个可写的SQLiteDatabase对象,创建或打开连接 */SQLiteDatabase sqliteDatabase = helper.getWritableDatabase();/* 创建两张表 */sqliteDatabase.execSQL("create table student(id INTEGER PRIMARY KEY autoincrement,name text);");sqliteDatabase.execSQL("create table "+MYTAB+"("+MYNAME+" text,"+MYSCORE+" integer);");/* 小贴士 */Toast.makeText(MainActivity.this, "数据表创建成功", 1000).show();}});/* 插入数据 */insertData.setOnClickListener(new OnClickListener() {public void onClick(View v) {/* 连接数据库 *//* 数据库中有表 , 对表进行操作 */SQLiteDatabase sqliteDatabase = helper.getWritableDatabase();/* 给表添加数据: *//* 方式1: *//* 增加一条数据 */sqliteDatabase.execSQL("insert into student(name) values('mike')");/* 方式2: *//* 使用SQLiteDatabase 对象的insert()方法 *//* 创建ContentValues对象 *//* 每次插入的时一条数据  */ContentValues cv = new ContentValues();cv.put("name", "mary");/* key==列    value==值 */sqliteDatabase.insert("student", null, cv);cv.clear();/* 对MYTAB进行数据添加  */sqliteDatabase.execSQL("insert into "+MYTAB+" values('ray',95)");sqliteDatabase.execSQL("insert into "+MYTAB+" values('tom',85)");sqliteDatabase.execSQL("insert into "+MYTAB+" values('jone',90)");cv.put(MYNAME, "jack");cv.put(MYSCORE, 78);sqliteDatabase.insert(MYTAB, null, cv);cv.clear();Toast.makeText(MainActivity.this, "数据插入成功", 1000).show();}});/* 修改数据 *//* updateData点击事件监听器 */updateData.setOnClickListener(new OnClickListener() {public void onClick(View v) {/* 建立和数据库的连接,获取SQLiteDatabase对象 */SQLiteDatabase sqliteDatabase = helper.getWritableDatabase();/* 方式1:直接使用语句 *///sqliteDatabase.execSQL("update student set name='mary key' where id=1");/* 方式2:使用sqliteDatabase.update();方法 */ContentValues cv = new ContentValues();cv.put("name", "mary key");/* 确定需要修改对应列的值 *//* 参1:表名  ; 参2:ContentValues对象; 参3:where字句,相当于sql中where后面的语句,?是占位符 *//* 参4:占位符的值; */sqliteDatabase.update("student", cv, "id=?", new String[]{"1"});Toast.makeText(MainActivity.this, "数据修改成功", 1000).show();}});/* 删除数据 ; 设置deleteData点击事件监听器 */deleteData.setOnClickListener(new OnClickListener() {public void onClick(View v) {/* 与数据库建立联系,获得SQLiteDatabase的对象 */SQLiteDatabase sqliteDatabase = helper.getWritableDatabase();/* 使用sql语句直接进行删除 *///sqliteDatabase.execSQL("");/* 调用:SQLiteDatabase对象的delete()的方法删除数据 *//* 参1:表名; 参2:条件语句; 参3:条件语句中对应占位符的值 */sqliteDatabase.delete("student", "id=?", new String[]{"1"});Toast.makeText(MainActivity.this, "数据删除成功", 1000).show();}});/* 查看数据 *//* selectData点击事件监听器 */selectData.setOnClickListener(new OnClickListener() {public void onClick(View v) {/* 获取SQLiteDatabase的对象 */SQLiteDatabase sqliteDatabase = helper.getReadableDatabase();/* 调用SQLiteDatabase的query()方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象 *//*参1 String:表名 * 参2 String[]:需要查询的列; * 参3 String :查询条件; * 参4 String[]:查询条件的参数; *  参5 String:对查询的结果进行分组; *  参6 String:对分组结果进行限制; *  参7 String: 对查询结果进行排序; *  * */Cursor cursor = sqliteDatabase.query("student", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);/* 保存结果集中对应字段的数据 */String id = null;String name = null;/* 从结果集中读取数据 */while(cursor.moveToNext()){id = cursor.getString(cursor.getColumnIndex("id"));name = cursor.getString(cursor.getColumnIndex("name"));}Toast.makeText(MainActivity.this, "查询数据为:id="+id+" \n name="+name, 1000).show();}});}}


更多相关文章

  1. SQLite 数据库 WAL 工作模式原理简介
  2. android中的数据库操作(SQLite)
  3. android 操作sqlite数据库
  4. Android 利用TCP通信 实现环境数据显示及控制指令下发
  5. Android数据加密之Rsa加密
  6. 数据显示Android“姜饼”系统用户数增多
  7. android中的数据库操作
  8. Android数据加密之Aes加密

随机推荐

  1. 【Android】socket局域网通信
  2. 升级android studio后编译的应用短暂白屏
  3. Android(安卓)Log升级版
  4. 对于Android代码保护过后软件的评估
  5. 开始今天的学习吧!Android开发Day1
  6. Android状态保存与恢复流程 完全解析
  7. 基于Android智能电视的应用程序的布局
  8. Android搜索实时显示功能实现
  9. Android的Google官方设计指南(上)
  10. Android缓存处理