微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLite在Android基本使用

insert / select / update / delete

一,通过直接执行sql语句执行

通过openHelper得到sqliteDatabase,然后直接调用方法

注意每个方法,只有当使用时才获得database,只有在失去时才调用close()方法,符合随手关闭资源的原则。

    public void insert(View v)
    {
    	 database=helper.getReadableDatabase();
         String sql="insert into student(name) values('xm')";
	 database.execsql(sql);
	 database.close();
    }
    public void select(View v)
    {
   	database=helper.getReadableDatabase();  	
    	String sql="select * from student;";
    	Cursor cursor=database.rawQuery(sql,null);
    	while(cursor.movetoNext())
    	{
    		Log.e("MainActivity","name:"+cursor.getString(cursor.getColumnIndex("name")));
    	}
		database.close();    	
    }
database.rawQuery(sql,strings[] ); 类似于preparedStatement,前面的sql语句有问号,则从其值从后面字符串中得到。
二,通过调用接口来实现
    public void insert(View v){
    	 database=helper.getReadableDatabase();
    	 String nullColumnHack=null;
		 ContentValues values=new ContentValues();
		 values.put("name","zs");
		 database.insert("student",nullColumnHack,values);
		 database.close();
    }
    public void delete(View v){
        database=helper.getReadableDatabase();  	
    	String[] whereArgs=new String[1];
    	whereArgs[0]="xm";
		int del=database.delete("student","name=?",whereArgs);
		Toast.makeText(this,"已经删除了"+del,Toast.LENGTH_SHORT).show();
		database.close();
    }
注意 Toast.makeText 方法第二个参数可以是int类型,不过这里指的是R.string.XXX表示通过这个 int 来定位对应的字符串,否则报错。
sqliteDataBase.insert 第一个参数表示表名,第二个参数表示避免插入的列为null而报错,所以设置一个列名,当插入列为空时,用第二个参数取代,插入null避免报错,

第三个参数,用来放入插入的列名与带插入的值,类似于一个map。返回值表示已经添加到第多少条数据,若为-1,表示添加失败。

delete方法第二个参数是where从句,但不用去写where,要把参数用“?”替代,参数放在后面的字符串数组中,若是要全部删除,写“1”,其返回值是删除的数据条数。


query(table,columns,selection,selectionArgs,groupBy,having,orderBy,limit); 第一个参数表名,第二个选中列名的String集合,第三个参数where条件(不用写where),第四个参数为where条件中参数的值,可以为null,第五个参数分组的语句,若不分组则为null,第六个参数排序,形式为order by,却不必写(order by),认为null,第六个参数与limit语句类似,可以为空。即可以在sql中的query语句中不写的参数,都可以为空。

返回的是Cursor 。

两种方法进行比较:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐