Android之sqlite数据库的简单使用

第一种方法:手写sql脚本

新建一个DbOpenHelper类,继承SQLiteOpenHelper

package com.example.android_sqlite_db;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class DbOpenHelper extends SQLiteOpenHelper {
	private static String name="mydb.db";//数据库的名称
	private static int version=2;//数据库的版本号,
	//注意:当version的值比之前的值大时会去执行onUpgrade方法,而不是再执行onCreate方法了
	
	public DbOpenHelper(Context context) {
		super(context, name, null, version);
		// TODO Auto-generated constructor stub
		
	}

	//当数据库创建的时候,是第一次被执行的,完成对数据库的表的创建
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		String sql="create table person(id integer primary key autoincrement,name varchar(64),address varchar(64))";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		String sql="alter table person add sex varchar(8)";
		db.execSQL(sql);
	}

}

新建一个DbRepository接口:

package com.example.android_sqlite_db.repository;

import java.util.List;
import java.util.Map;

public interface DbRepository {
	public boolean insertPerson(String[] parm);
	public boolean deletePerson(String[] parm);
	public boolean updatePerson(String[] parm);
	public Map<String,String> selectOnePerson(String[] parm);
	public List<Map<String,String>> selectListPerson(String[] parm);
}
新建一个 PersonService 类,实现DbRepository接口

package com.example.android_sqlite_db.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.android_sqlite_db.DbOpenHelper;
import com.example.android_sqlite_db.repository.DbRepository;

public class PersonService implements DbRepository {
	private Context context;

	public PersonService(Context context){
		this.context=context;
	}

	@Override
	public boolean insertPerson(String[] bindArgs) {
		// TODO Auto-generated method stub
		DbOpenHelper openHelper=new DbOpenHelper(context);
		SQLiteDatabase sqliteDatabase=null;
		try {
			sqliteDatabase=openHelper.getWritableDatabase();
			String sql="insert into person(name,address,sex) values(?,?,?)";
			sqliteDatabase.execSQL(sql, bindArgs);
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (sqliteDatabase!=null) {
				sqliteDatabase.close();
			}
		}
		return true;
	}

	@Override
	public boolean deletePerson(String[] parm) {
		// TODO Auto-generated method stub
		SQLiteDatabase sqliteDatabase=null;
		DbOpenHelper openHelper=new DbOpenHelper(context);
		try {
			sqliteDatabase=openHelper.getWritableDatabase();
			String sql="delete from person where id=?";
			sqliteDatabase.execSQL(sql, parm);

		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (sqliteDatabase!=null) {
				sqliteDatabase.close();
			}
		}
		return true;
	}

	@Override
	public boolean updatePerson(String[] bindArgs) {
		// TODO Auto-generated method stub
		DbOpenHelper openHelper=new DbOpenHelper(context);
		SQLiteDatabase sqliteDatabase=null;
		try {
			sqliteDatabase=openHelper.getWritableDatabase();
			String sql="update  person set name=?,address=?,sex=? where id=?";
			sqliteDatabase.execSQL(sql, bindArgs);
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (sqliteDatabase!=null) {
				sqliteDatabase.close();
			}
		}
		return true;
	}

	@Override
	public Map<String,String> selectOnePerson(String[] selectionArgs) {
		// TODO Auto-generated method stub
		SQLiteDatabase sqliteDatabase=null;
		Map<String,String> map=new HashMap<String,String>();
		DbOpenHelper openHelper=new DbOpenHelper(context);
		try {
			sqliteDatabase=openHelper.getWritableDatabase();
			String sql="select * from person where id=?";
			Cursor cursor=sqliteDatabase.rawQuery(sql, selectionArgs);
			String[]columnName=cursor.getColumnNames();
			while (cursor.moveToNext()) {
				for (int i = 0; i < columnName.length; i++) {
					String columnNames=columnName[i];
					int columnIndex=cursor.getColumnIndex(columnNames);
					String columnValue=cursor.getString(columnIndex);
					if (columnValue==null) {
						columnValue="";
					}
					map.put(columnNames, columnValue);
				}
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (sqliteDatabase!=null) {
				sqliteDatabase.close();
			}
		}
		return map;
	}

	@Override
	public List<Map<String,String>> selectListPerson(String[] selectionArgs) {
		// TODO Auto-generated method stub
		SQLiteDatabase sqliteDatabase=null;
		List<Map<String,String>> listMap=new ArrayList<Map<String,String>>();
		DbOpenHelper openHelper=new DbOpenHelper(context);
		try {
			sqliteDatabase=openHelper.getWritableDatabase();
			String sql="select * from person";
			Cursor cursor=sqliteDatabase.rawQuery(sql, selectionArgs);
			String[]columnName=cursor.getColumnNames();
			while(cursor.moveToNext()){
				Map<String,String> map=new HashMap<String, String>();
				for (int i = 0; i < columnName.length; i++) {
					String columnNames=columnName[i];
					int columnIndex=cursor.getColumnIndex(columnNames);
					String columnValue=cursor.getString(columnIndex);
					if (columnValue==null) {
						columnValue="";
					}
					map.put(columnNames, columnValue);
				}
				listMap.add(map);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (sqliteDatabase!=null) {
				sqliteDatabase.close();
			}
		}
		return listMap;
	}

}
myTest测试类继承AndroidTestCase

package com.example.android_sqlite_db.test;

import java.util.List;
import java.util.Map;

import com.example.android_sqlite_db.DbOpenHelper;
import com.example.android_sqlite_db.service.PersonService;

import android.test.AndroidTestCase;
import android.util.Log;

public class MyTest extends AndroidTestCase {
	public MyTest(){}
	
	public void create(){
		DbOpenHelper db=new DbOpenHelper(getContext());
		db.getWritableDatabase();
	}
	
	public void insertPerson(){
		PersonService service=new PersonService(getContext());
		boolean flg=service.insertPerson(new String[]{"张三","广西省","男"});
		Log.i("MyTest", flg+"");
	}
	public void deletePerson(){
		PersonService service=new PersonService(getContext());
		boolean flg=service.deletePerson(new String[]{"1"});
		Log.i("MyTest", flg+"");
	}
	
	public void updatePerson(){
		PersonService service=new PersonService(getContext());
		boolean flg=service.updatePerson(new String[]{"李四","广州市","不祥","2"});
		Log.i("MyTest", flg+"");
	}
	
	public void getOnePerson(){
		PersonService service=new PersonService(getContext());
		Map<String,String> map=service.selectOnePerson(new String[]{"2"});
		Log.i("MyTest", map.toString());
	}
	
	public void getListPerson(){
		PersonService service=new PersonService(getContext());
		List<Map<String,String>> map=service.selectListPerson(null);
		Log.i("MyTest", map.toString());
	}
	
	
}
最后在AndroidManifest.xml清单文件里加上AndroidTestCase的单元测试配置:

<instrumentation android:targetPackage="com.example.android_sqlite_db" android:name="android.test.InstrumentationTestRunner"></instrumentation><pre name="code" class="html"><application>
    <uses-library android:name="android.test.runner"/>
</application>

 


第二种方法:使用Android API封装好的方法

新建一个DbRepository2接口

package com.example.android_sqlite_db.repository;

import java.util.List;
import java.util.Map;

import android.content.ContentValues;

public interface DbRepository2 {
	public long insertPerson(ContentValues values);
	public long deletePerson(String[] parm);
	public long updatePerson(ContentValues values,String[] whereArgs);
	public Map<String,String> selectOnePerson(String[] parm);
	public List<Map<String,String>> selectListPerson(String[] parm);
}
新建一个PersonService2类实现 DbRepository2接口

package com.example.android_sqlite_db.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.android_sqlite_db.DbOpenHelper;
import com.example.android_sqlite_db.repository.DbRepository;
import com.example.android_sqlite_db.repository.DbRepository2;

public class PersonService2 implements DbRepository2{
	private DbOpenHelper openHelper=null;
	private Context context;
	public PersonService2(Context context){
		this.context=context;
	}
	@Override
	public long insertPerson(ContentValues values) {
		// TODO Auto-generated method stub
		long id=0;
		try {
			openHelper=new DbOpenHelper(context);
			SQLiteDatabase sqliteDatabase=openHelper.getWritableDatabase();
			id=sqliteDatabase.insert("person", null, values);
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (openHelper!=null) {
				openHelper.close();
			}
		}
		
		return id;
	}
	@Override
	public long deletePerson(String[] whereArgs) {
		long id=0;
		try {
			openHelper=new DbOpenHelper(context);
			SQLiteDatabase sqliteDatabase=openHelper.getWritableDatabase();
			id=sqliteDatabase.delete("person", "id=?", whereArgs);
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (openHelper!=null) {
				openHelper.close();
			}
		}
		return id;
	}
	@Override
	public long updatePerson(ContentValues values,String[] whereArgs) {

		// TODO Auto-generated method stub
		long id=0;
		try {
			openHelper=new DbOpenHelper(context);
			SQLiteDatabase sqliteDatabase=openHelper.getWritableDatabase();
			id=sqliteDatabase.update("person", values, "id=?", whereArgs);
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (openHelper!=null) {
				openHelper.close();
			}
		}
		
		return id;
	
	}
	@Override
	public Map<String, String> selectOnePerson(String[] selectionArgs) {
		Map<String, String> map=new HashMap<String, String>();
		try {
			openHelper=new DbOpenHelper(context);
			SQLiteDatabase sqliteDatabase=openHelper.getWritableDatabase();
			String[] columns=new String[]{"id","name","address","sex"};
			Cursor cursor=sqliteDatabase.query(false, "person", columns, "id=?", selectionArgs, null, null, null, null);
			String[] columnNameArr=cursor.getColumnNames();
			while(cursor.moveToNext()){
				for (int i = 0; i < columnNameArr.length; i++) {
					String columnName=columnNameArr[i];
					int columnIndex=cursor.getColumnIndex(columnName);
					String columnValue=cursor.getString(columnIndex);
					map.put(columnName, columnValue);
				}
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (openHelper!=null) {
				openHelper.close();
			}
		}
		return map;
	}
	@Override
	public List<Map<String, String>> selectListPerson(String[] selectionArgs) {
		List<Map<String, String>> listMap=new ArrayList<Map<String,String>>();
		try {
			openHelper=new DbOpenHelper(context);
			SQLiteDatabase sqliteDatabase=openHelper.getWritableDatabase();
			String[] columns=new String[]{"id","name","address","sex"};
			Cursor cursor=sqliteDatabase.query(false, "person", columns, null, selectionArgs, null, null, null, null);
			String[] columnNameArr=cursor.getColumnNames();
			while(cursor.moveToNext()){
				Map<String, String> map=new HashMap<String, String>();
				for (int i = 0; i < columnNameArr.length; i++) {
					String columnName=columnNameArr[i];
					int columnIndex=cursor.getColumnIndex(columnName);
					String columnValue=cursor.getString(columnIndex);
					map.put(columnName, columnValue);
				}
				listMap.add(map);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			if (openHelper!=null) {
				openHelper.close();
			}
		}
		return listMap;
	
	}


}

新建一个测试类:

package com.example.android_sqlite_db.test;

import java.util.List;
import java.util.Map;

import android.content.ContentValues;
import android.test.AndroidTestCase;
import android.util.Log;

import com.example.android_sqlite_db.service.PersonService2;

public class MyTest2 extends AndroidTestCase{
	
	public void addPerson(){
		PersonService2 service=new PersonService2(getContext());
		ContentValues values=new ContentValues();
		values.put("name", "王五");
		values.put("address", "阳江市");
		values.put("sex", "男");
		long id=service.insertPerson(values);
		Log.i("MyTest2", id+"");
	}
	
	public void updatePerson(){
		PersonService2 service=new PersonService2(getContext());
		ContentValues values=new ContentValues();
		values.put("name", "小李四");
		values.put("address", "茂名市");
		values.put("sex", "男");
		long id=service.updatePerson(values, new String[]{"2"});
		Log.i("MyTest2", id+"");
	}
	
	public void deletePerson(){
		PersonService2 service=new PersonService2(getContext());
		long id=service.deletePerson(new String[]{"3"});
		Log.i("MyTest2", id+"");
	}
	
	public void selectOnePerson(){
		PersonService2 service=new PersonService2(getContext());
		Map<String, String> map=service.selectOnePerson(new String[]{"4"});
		Log.i("MyTest2", map.toString());
	}
	
	public void selectListPerson(){
		PersonService2 service=new PersonService2(getContext());
		List<Map<String, String>> listMap=service.selectListPerson(null);
		Log.i("MyTest2", listMap.toString());
	}
}





 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android中的SQLite数据库是一种轻量级的数据库,它可以在Android应用程序中存储和检索数据。SQLite数据库使用SQL语言来管理数据,可以在Android应用程序中创建、读取、更新和删除数据。使用SQLite数据库可以使应用程序更加高效和可靠,因为它可以在本地存储数据,而不需要访问网络。在Android使用SQLite数据库需要使用SQLiteOpenHelper类来创建和管理数据库SQLiteOpenHelper类提供了一些方法来创建和升级数据库,以及插入、查询、更新和删除数据。在使用SQLite数据库时,需要注意数据类型、表结构、SQL语句等方面的问题,以确保数据的正确性和完整性。 ### 回答2: Android平台经常使用SQLite数据库来存储和管理本地数据。在本文中,我们将讨论如何在Android使用SQLite数据库。 首先,在Android使用SQLite数据库,我们需要创建一个SQLiteOpenHelper类。这个类用于创建和升级数据库。它包含了两个重要的方法:onCreate()和onUpgrade()。onCreate()方法将在首次创建数据库时被调用。onUpgrade()方法将在升级数据库时被调用。我们可以在这个类中定义表名,列名,数据库版本号和其他数据库相关信息。 接下来,在我们使用数据库前,需要实例化一个SQLiteOpenHelper类对象。这个对象用于打开或创建数据库。我们可以使用getReadableDatabase()和getWritableDatabase()方法来获取一个可读/写的数据库对象。 在获取数据库对象后,我们可以执行SQL命令来操作数据库。我们可以使用execSQL()方法来执行SQL命令。我们可以使用insert()、update()和delete()方法来执行增、删、改操作。我们可以使用rawQuery()方法来执行查询操作。 SQLiteOpenHelper类和SQLiteDatabase类并不是线程安全的。因此我们需要确保在使用时进行同步操作。我们可以使用synchronized关键字来达到同步效果。 在Android中,许多第三方的开源框架,如OrmLite、GreenDao和Realm等,提供了ORM(对象关系映射)的功能,使得数据库的操作更加简单和便捷。 总的来说,在Android使用SQLite数据库可以轻松地存储和管理本地数据。SQLiteOpenHelper和SQLiteDatabase提供了丰富的API来操作数据库。ORM框架为我们提供了更加简便的数据库操作方式。因此,掌握AndroidSQLite数据库使用非常重要。 ### 回答3: Android SQLite数据库Android开发中最常用的数据库之一,它是一个基于文件的嵌入式关系数据库管理系统。SQLite在设计时考虑到了资源占用和运行效率,所以非常适合在移动设备上使用。下面将详细介绍如何使用Android SQLite数据库。 1. 创建数据库 首先需要创建一个SQLite数据库,通过SQLiteOpenHelper类来创建,传入的参数主要是数据库版本号和数据库名称。在SQLiteOpenHelper的子类中重写onCreate方法来创建表格和一些初始化操作。 2. 执行SQL语句 在SQLiteOpenHelper的子类中重写onUpgrade方法来执行升级操作,可以通过执行ALTER TABLE语句来修改表格结构,并通过DROP TABLE语句删除表格。除此之外,在应用中也可以通过SQLiteDataBase对象的execSQL方法来执行SQL语句,如插入、删除或修改数据等。 3. 增删改查操作 增加(insert):通过SQLiteDataBase对象的insert方法来实现,在方法中传入表名和map对象,map对象中存储数据的键值对。 删除(delete):同样通过SQLiteDataBase对象的delete方法来实现,传入表名和删除条件。 修改(update):也是通过SQLiteDataBase对象的update方法来实现,同时传入修改的数据及条件。 查询(query):同样通过SQLiteDataBase对象的query方法来实现,传入要查询的表名、查询的列、查询条件等参数即可。 4. 事务操作 SQlite数据库支持事务操作,可以在一组操作中,只要有一个操作出现问题,就可以将之前的操作全部回滚,以保证数据的完整性和一致性。 以上就是android-sqlite数据库使用方法,当然还有很多细节需要注意,例如:表格的设计、SQL语句的优化等。熟练掌握SQLite使用,可以帮助开发者更好地管理应用数据,提高应用性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值