加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Sqlite事务+listview显示数据库信息多种方式)

发布时间:2020-12-12 19:54:12 所属栏目:百科 来源:网络整理
导读:SqliteDatabase 事务 列表显示多条数据 事务,以及事务的完整性 SQLiteDatabase 控制事务方法: beginTransaction(); 开启事务 setTransactionSuccessful(); 设置事务成功 endTransaction(); 结束事务 db.beginTransaction(); // 开始事务 try { db.execSQL(
SqliteDatabase事务列表显示多条数据 事务,以及事务的完整性 SQLiteDatabase控制事务方法:

beginTransaction(); 开启事务

setTransactionSuccessful(); 设置事务成功

endTransaction();结束事务

db.beginTransaction(); //开始事务

try {

db.execSQL("update student set amount=amount-300 where name=?",new Object[]{"张三"});

db.execSQL("update student set amount=amount+300 where name=?",new Object[]{"李四"});

db.setTransactionSuccessful(); //设置事务成功

} catch (Exception e) {

System.out.println("事务执行出现异常,不能设置事务成功!");

}finally{

//无论是否出现异常,都要结束事务。

db.endTransaction();

}

cmd常见指令: Sqlite3 xx.db 查看xx数据库

.tables 查看所有表

.exit 退出

.databases 查看所有数据库

标签: include标签实现组件复用

将另一个布局文件加载到当前布局文件,实现组件复用

<!--加载一个布局文件-->

<include layout="@layout/item"/>

属性 android:visibility=有三个选项


<!--

Visible :可见

都是不可见

invisible :还占据空间

gone:不占据空间

-->

列表显示多条数据 simpleAdapter 代码:

OtherFishService ofs = new OtherFishService(this);

List<Fish> fishs = ofs.query();

List<Map<String,Object>>data=new ArrayList<Map<String,Object>>();

for(Fish f:fishs){

Map<String,Object> map = new HashMap<String,Object>();

map.put("_id",f._id);

map.put("name",f.name);

map.put("age",f.age);

data.add(map);

}

String[] from = new String[]{"_id","name","age"};

int[] to = new int[]{R.id.tv_id,R.id.tv_name,R.id.tv_age};

SimpleAdapter adapter = new SimpleAdapter(this,

data,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> R.layout.item,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> from,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> to);

lv.setAdapter(adapter);

以上可以实现但是过于麻烦!

我们还可以使用专门为数据库提供的

Cursoradapter

Cursor c = ofs.getAllCursor();

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> c,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> 我们不单单只用android给我们提过的CursorAdapter我们还可以自定义一个CursorAdapter

自定义CursorAdapter public class MyCursorAdapter extends CursorAdapter {

//布局加载器(是一个服务,用来加载xml布局文件到java代码中)

private LayoutInflater mInflater;

public MyCursorAdapter(Context context,Cursor c) {

super(context,c);

mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

mInflater = LayoutInflater.from(context);

}

//创建一个item的布局

@Override

public View newView(Context context,Cursor cursor,ViewGroup parent) {

// TODO Auto-generated method stub

//通过布局加载器加载布局

View view = mInflater.inflate(R.layout.item,null);

return view;

//把数据绑定给item里面的布局

public void bindView(View view,Context context,Cursor cursor) {

//1先得到控件

//2得到数据

//3绑定数据给控件

TextView tv_id = (TextView) view.findViewById(R.id.tv_id);

TextView tv_name = (TextView) view.findViewById(R.id.tv_name);

TextView tv_age = (TextView) view.findViewById(R.id.tv_age);

String _id = cursor.getString(0);

String name = cursor.getString(1);

String age = cursor.getString(2);

tv_id.setText(_id);

tv_name.setText(name);

tv_age.setText(age);

int position = cursor.getPosition();

if(position%2 ==0){

view.setBackgroundColor(Color.RED);

}else{

view.setBackgroundColor(Color.GREEN);

}

}

为了实现 我们想要的并且系统没提供的效果所以我们要自定义Adapter

不仅可以继承CursorAdapter 实现自定义CursorAdapter ,我们还可以通

过继承BaseAdapter 。

private class MyCursorAdapter extends BaseAdapter {

private Context context;

private Cursor c;

private LayoutInflater mInflater;

public MycursorAdapter1(Context context,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> super();

this.context = context;

this.c = c;

mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

@Override

public int getCount() {

// TODO Auto-generated method stub

return c.getCount();

public Object getItem(int position) {

Person p = null;

if (c.moveToPosition(position)) {

String id = c.getString(0);

String name = c.getString(1);

String age = c.getString(2);

p = new Person(id,name,age);

}

return p;

public long getItemId(int position) {

return position;

public View getView(int position,View convertView,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> //1得到视图

//2从视图中拿到要显示对象

//3cursor里面拿值

//4绑定

//5返回

注意:getView方法实际会执行原本次数2倍(例:7条数据与,getView执行7*2次),第一遍执行是为了测试有多少条数据,第2遍执行才是真正的现实操作

View view = mInflater.inflate(R.layout.item,Simsun; font-size:14px; line-height:18px; word-wrap:break-word"> TextView tv_id = (TextView) view.findViewById(R.id.bt_id);

TextView tv_name = (TextView) view.findViewById(R.id.bt_name);

TextView tv_age = (TextView) view.findViewById(R.id.bt_age);

tv_id.setText(id);

tv_name.setText(name);

tv_age.setText(age);

if ( position% 2 == 0) {

view.setBackgroundColor(Color.RED);

return view;

当我们用完cursor的时候,怎么关闭他?

//应用回收资源退出程序时调用该方法

protected void onDestroy() {

super.onDestroy();r

Cursor c = adapter.getCursor();

if(c != null && !c.isClosed()){

c.close();

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读