Sqlite的基本操作

基础

建立数据库

步骤:

        1,写一个类继承SQLiteOpenHelper。示例:

public class MyHelper extends SQLiteOpenHelper {
	public MyHelper(Context context){
		super(context,"name.db",null,1);//调用父类的构造函数,父类会自动创建一个数据库
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	}
}
        注意其中的构造方法: 所有的构造方法调用父类的super(Context,String,CursorFactory,int)。这里的 第二个参数指的是要创建的数据库的名(非表名) ;而super方法,会自动创建一个数据库。而后,我们在这个库中创建任意多张表,在每一个表中进行CRUD操作。 我们没有办法自己创建一个数据库,只能通过SQLiteOpenHelper中相应的构造函数来创建;我们能做的就是在创建好的库中创建表(也就是create table),并对表进行操作。

onCreate()

        通过构造函数,我们已经创建好了一个库,而onCreate()就是用来在初始化该库的表结构的。也就是说,它是用来在数据库中添加表的,并不是用来创建库的。其中传入的参数db就是通过构造函数创建好的数据库。

数据类型

        sqlite是支持多种数据类型的(数据的大小是没有限制的,即使在创建的时候指定了)。例如:

String sql = "CREATE TABLE IF NOT EXISTS "
				+ "error_"
				+ id
				+ "_"
				+ curId
				+ " (_ID INTEGER PRIMARY KEY autoincrement, id int, json varchar(200),type varchar(20))";
		db.execSQL(sql);
这里将id指定为int类型,因为需要取最大的id值。如果用成varchar,那么取的结果和int的结果是不一样的。

导入外界库

        将该数据库放在assets目录下,然后通过流的方式把它读到手机中

private void copyDatabase() {
			File file = new File(getFilesDir(), "number_location.db");//getFilesDir()是一个api,得到的是/data/data/包名/files目录
			if (file.exists() && file.length() > 1L)
				return;
			AssetManager assets = getResources().getAssets();//得到AssetsManager,用于操作assets目录下的文件
			try {
				InputStream inputStream = assets.open("number_location.db");//将assets目录下的文件转换成流,然后将它复制到files中
				byte[] buff = new byte[1024];

				FileOutputStream out = new FileOutputStream(file);
				int length = 0;
				while ((length = inputStream.read(buff)) != -1) {
					out.write(buff, 0, length);
				}
				inputStream.close();
				out.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
        通过以下代码打开复制到files目录下的数据库:
SQLiteDatabase database = SQLiteDatabase.openDatabase(path
				+ "/number_location.db", null, SQLiteDatabase.OPEN_READONLY);// path为数据库所在的目录

操作

根据表名判断该表是否存在

                String sql = "select count(*) as c from sqlite_master where type='table' and "
				+ "name = '" + tableName.trim() + "' ";
		cursor = db.rawQuery(sql, null);
		if (cursor.moveToNext()) {
			int count = cursor.getInt(0);
			if (count > 0)
				result = true;
		}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值