SQLite(下一部分) 和broadcast(广播)

对表的查询

查询返回的是结果集

增删改返回的是受影响的行数

  1. 获取数据库对象

  2. 执行查询 将结果集放入游标内

  3. 取出结果

  4. 释放资源

1  获取数据库对象

               DBhelper dbHelper = new DBHelper(MainActivity.this);

2.执行查询 将结果集放入游标内

                SQLiteDatabase db = dbHelper.getWritableDatabase();
                String sql = "select * from userinfo";
                Cursor cursor = db.rawQuery(sql, null);

执行查询使用的是rawQuery 

3.取出结果

这里使用的是实体类 需要先创建对用的实体类

package com.jzj.day30tage01;

public class Userinfo {
    private int id;
    private String user;
    private String pwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}
        List<userinfo> list = new ArrayList<>();
        while (cursor.moveToNext()){
            Userinfo userinfo = new Userinfo();
            userinfo.setId(cursor.getInt(0));
            userinfo.setUser(cursor.getString(1));
            userinfo.setPwd(cursor.getString(2));

            list.add(userinfo);
        }

4.释放资源并遍历在后台输出

        cursor.close();
        db.close();

        for (userinfo userinfo : list) {
           Log.i("据","id:"+userinfo.getId()+"user"+userinfo.getUser()+"pwd"+userinfo.getPwd());
        }

对表的增删改

1. 获取数据库对象
2. 执行动作
3. 释放资源

1. 获取数据库对象

 DBHelper dbHelper = new DBHelper(MainActivity3.this);

2. 执行动作

        SQLiteDatabase db = dbHelper.getWritableDatabase();

        String sql = "delete from userinfo where id = ?";

        db.execSQL(sql,new String[]{"1"});

 执行增删改使用的是execSQL

3. 释放资源并在前台提示成功

        db.close();

        Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();

broadcast(广播)

broadcast(广播)是四大组件之一

关键点:只要是四大组件都必须在清单(androidManifest.xml)文件中进行注册

broadcast(广播)是在组件之间传播数据(intent)的一种机制

在组件中进行耗时操作时会报(application No Response简称(ANR) )错误

广播接收器分为:标准广播和有序广播

标准广播分为动态注册和静态注册

动态注册是使用java代码注册

静态注册是直接在androidManifest.xml注册

静态注册

需要创建Broadcast分两种

1.

2.创建一个class并继承 BroadcastReceiver抽象类并实现其中的抽象方法来接收广播

package com.jzj.day30sage02;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("Myreceiver","接收的广播是"+intent.getStringExtra("info"));
    }
}

需要在AndroidManifest内给你新创建的Broadcast添加名字

            <intent-filter>
                <action android:name="houp"></action>
            </intent-filter>

3.发送广播

                Intent intent = new Intent();
                intent.setPackage(getPackageName());
                intent.setAction("houp");
                intent.putExtra("info","hahaha");
                sendBroadcast(intent);

简单的动态注册

1.使用内部类的方法创建广播接收器

    class MyBroadcast extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("动态的广播接收者","动态接收的数据"+intent.getStringExtra("info1"));
        }
    }

2.然后调用内部类和IntentFilter来模拟网络广播发送

        myBroadcast = new MyBroadcast();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("houp1");
        registerReceiver(myBroadcast,intentFilter);





        模拟发送
                Intent intent = new Intent();
                intent.setAction("houp1");
                intent.putExtra("info1","动态哈哈哈");
                sendBroadcast(intent);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值