数据库

一、 创建数据库

                通过openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)方法创建数据库。    

 	SQLiteDatabase db =this.openOrCreateDatabase("test_db.db", Context.MODE_PRIVATE, null);
 	SQLiteDatabase db2 = SQLiteDatabase.openOrCreateDatabase("/data/data/com.test/databases/test_db2.db3", null);
 
               如上两种方式均能创建数据库,this.openOrCreateDatabase是对SQLiteDatabase.openOrCreateDatabase而来,如代码所见,原生的SQLiteDatabase.openOrCreateDatabase()方法第一参数要求输入绝对路劲,而所有的数据库都是储存于“data/data/应用报名/databases”目录下,所以输入完全的绝对路劲是一件重复且繁杂的工作。采用this.openOrCreateDatabase则省去了此操作。
 
 
 以下是自己写的。
 
二、数据库的查询
	 Cursor c=db.query("weizhang", null, null, null, null, null, null);//查询weizhang表里的所有内容,放到cursor对象中
	 第一个参数是表名,第二个参数是要查询的列名String[]类型数据,null表示获取所有列,第三个参数表示查询的条件,比如:SELECT * FROM weizhang WHERE id = 1,那么此处就填id=1,注意是String类型。
	cursor游标默认的是指向第一个数据的上一行,如果不c.moveToFirst()会报错。
cursor:	游标移动的方法有:moveToFirst()//移到第一行
		      moveToLast()//移到最后一行
		      moveToNext()//下移一行
		      moveToPosition(int position)//移到指定位置
		      moveToPrevious()//移到之前位置
	getString(int columnIndex)方法可以获取当前行,columnIndex列的的String类型数据.....getFloat(int columnIndex).....
	getColumnIndexOrThrow(String columnName)方法可以通过列名获取列名所在的列数。
   上面三种方法联合起来可以通过列名得到每一行的数据。
 
 
 
  模糊查询:
Cursor cursor = db.query("abc", null, "name  LIKE ? or name Like ?", new String[]{"%北%","%底%"}, null, null, null);
如上,第四个参数代替第三个参数中的 ?号,有几个问号第四个参数就有几个值。
 上面的查询等价于SQL语句:select * from abc where name like '%北%' or name like '%底%'
 也可改为
Cursor cursor = db.query("abc", null, "name  LIKE '%北%' or name Like '%底%'", null, null, null, null);
查询还有个方法
Cursor cursor = db.rawQuery("SELECT * FROM abc WHERE name LIKE '%北%' or "+Field.name+" Like '%底%'" , null);
或者
Cursor cursor = db.rawQuery("SELECT * FROM abc WHERE name LIKE ? or "+Field.name+" Like ?" , new String[]{"%北%","%底%"});

 
 
三、数据库的插入
	ContentValues values=new ContentValues();
         values.put("groupid", group);
         values.put("childid", child);
         values.put("persons", item);
	db.insert("weizhangperson", null, values);
	第一个参数是要插入的表名,第二个参数表示如果要插入的数据没满足列数,空列用第2个参数表示,第三个参数表示要插入的数据ContentValues类型。
	也可:db.execSQL("INSERT INTO "+table+" VALUES ("+groupPosition+","+childPosition+", "+"'" +child.get(groupPosition)[childPosition]+"'"+")");来插入数据。
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值