Android Studio Cursor里面的数据获取并且使用

这篇具有很好参考价值的文章主要介绍了Android Studio Cursor里面的数据获取并且使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用Android Studio,使用数据库时查询用到cursor。

但是怎么查询到之后,怎么使用里面的数据呢?

在这里以我用的Sqlite为例:

使用Cursor对象获取查询结果

  一、要执行查询,需要用到SQLiteDatabase 对象的rawQuery()方法,第1个参数为SELECT语句,第2个参数设为null即可:

rawQuery("SELECT *  FROM  test",null);  //返回test数据表的所有记录

        二、rawQuery()方法返回的查询结果为Cursor类的对象。Cursor可称为”数据指针“,要读取查询结果中某一个记录,就必须将Cursor指标指到它,之后才能读取其内容。

moveToFirst() 移到第一个记录 moveToLast() 移到最后一个记录
moveToNext() 移到下一个记录 moveToPrevious() 移到前一个记录
Cursor cur = db.rawQuery("SELECT  *   FROM  test");//执行查询
if(cur.moveToFirst())   //查询结果中有数据才继续
    do{               //利用do/while循环逐个读取
    … //读取指针所指的数据
}while(cur.moveToNext());  //若还有下一个记录,就继续do/while循环

android cursor循环,android studio,android,sqlite

public class MainActivity extends ActionBarActivity {
    static final String db_name = "testDB";  //数据库名称
    static final String tb_name = "test";   // 数据表名称
    SQLiteDatabase db; //数据库对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //打开或创建数据库
        db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE,null);
        String createTable = "CREATE TABLE IF NOT EXISTS " +
                tb_name +
                "(name VARCHAR(32)," +
                "phone VARCHAR(16)," +
                "email VARCHAR(64))";
        db.execSQL(createTable);        //创建数据表

        Cursor c = db.rawQuery("SELECT  *  FROM "+tb_name,null);//查询tb_name数据表中的所有数据

        if(c.getCount()==0){          //若无数据,则立即新增两项数据
            addData("Flag Publishing Co.","6666666","service@flag.com.tw");
            addData("PCDIY Magazine","7777777","service@flag.com.tw");
            c=db.rawQuery("SELECT  *  FROM "+tb_name,null);//重新查询
        }

        if (c.moveToFirst()) {         //移到第1项数据(若有数据才继续)
            String str = "总共有  "+c.getCount()+"项数据\n";
            str+="-------\n";

            do {              //逐项读出数据,并串接成信息字符串
                str+="name:"+c.getString(0)+"\n";
                str+="phone:"+c.getString(1)+"\n";
                str+="email:"+c.getString(2)+"\n";
                str+="------\n";
            }while(c.moveToNext());   //有下一项就继续循环
            TextView txv = (TextView) findViewById(R.id.txv);
            txv.setText(str);   //显示信息字符串
        }
        db.close();  //关闭数据库
    }

    private void addData(String name,String phone,String email) {
        ContentValues cv = new ContentValues(3);  //创建含3个数据项的对象

        cv.put("name", name);
        cv.put("phone",phone);
        cv.put("email", email);

        db.insert(tb_name, null, cv);    //将数据加到数据表
    }

}

 那么怎么页面之间传输获取到的数据呢?

一、第一种数据传递的方式是通过inputExtra方法来进行数据的传递的

 Intent intent=new Intent(MainActivity.this,XXX.class);//xxx为你要传递数据的界面类名
               
                intent.putExtra("这里写你想要传递的数据名(可以随便写,但是别忘了待会还得用)", name);//name是你要传递的数据,按照第三步骤自己提前获取
               
                startActivity(intent);跟Intent的用法很像,只是多了上面的putextra代码

接下来就是接受数据了,到你的xxx.Java文件里

 Intent intent=getIntent();这是默认格式,直接用就可以
        String name=intent.getStringExtra("name");
//前面这个name是可以随便写,但是后面这个name必须是你刚刚写的传递数据的名字
//这两个名字可以是一样的,你怕混淆可以用一样的,

现在已经在新的类文件的中获取到了传递的数据,接下来你就用了

比如,把这个数据显示出来:

第一、在新的类文件的布局文件里写好一个textview再绑定,然后可以用

xx.setText(name);//这里用拿刚刚的name为例,根据自己的需求填写

总结:其实很简单,第一步用intent结合extra传递数据

第二、用extra getstring接受数据就可以

二、android传递数据的第二中方式第二种传递数据的方式是bundle:

Bundle传递对象示例

        当传递的参数很多时可以传递一个对象。当Bundle传递的是对象或对象数组时,必须实现Serialiable或Parcelable接口。
1. 实现Serializable接口

package com.example.bundletest;
import java.io.Serializable;
public class FunPerson implements Serializable {
    //创建实例变量
    private String name;
    private int num;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getNum() {
        return num;
    }
}

2. 向Bundle写入数据

public class MainActivity extends AppCompatActivity {
    //声明控件对象
    private Button mButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取控件的对象
        mButton = findViewById(R.id.button);
        //为Button绑定监听器
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /**
                 * 存入数据
                 */
                FunPerson person = new FunPerson();
                //设置数据
                String name = "Trump is fun";
                int num = 12345;
                person.setName("name");
                person.setNum(num);
                //实例化一个Bundle
                Bundle bundle = new Bundle();
                //把FunPerson数据放入到Bundle容器中
                bundle.putSerializable("Person", person);
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                //把Bundle容器中的数据放到Intent中
                intent.putExtras(bundle);
                //启动该Intent,实现Activity的跳转
                startActivity(intent);
            }
        });
    }
}

3. 从Bundle读取数据文章来源地址https://www.toymoban.com/news/detail-757483.html

public class SecondActivity extends AppCompatActivity {
    //声明控件对象
    private TextView textView;
    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        //获取控件的对象
        textView = findViewById(R.id.text_view);
        /**
         *读取数据
         */
        Intent intent = getIntent();
        //从Intent中取出Bundle
        Bundle bundle = intent.getExtras();
        //获取FunPerson里的数据数据
        assert bundle != null;
        FunPerson person = (FunPerson)bundle.getSerializable("Person");
        assert person != null;
        String name = person.getName();
        int num = person.getNum();
        //显示数据
        textView.setText(name + "\n" + num);
    }
}

到了这里,关于Android Studio Cursor里面的数据获取并且使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android studio里面build.gradle文件说明,ndk版本和gradle插件关系

    一、上述的android gradle 插件版本和gradle版本 对应关系         Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers           二、修改gradle版本(gradle-wrapper.properties文件),gradle插件版本(build.gradle文件)            NDK版本默认是根据配置Android Gradle插

    2024年02月16日
    浏览(49)
  • Android Studio利用CMake生成.so文件并且可供其他项目引用

    CMake是一个主要用于CPP的构建工具。 CMake语言是平台无关的中间编译工具。同一个CMake编译规则在不同系统平台构建出不同的可执行构建文件,所有操作都是通过编译CMakeLists.txt来完成的。在Linux产生MakeFile,在Windows平台产生Visual Studio工程等。 CMake 旨在解决各平台的不同Make工

    2024年02月12日
    浏览(49)
  • 使用MATLAB将Excel里面的数据导入,并且将MATLAB数据导入到Excel里面的命令介绍

    Matlab中求解线性方程组——高斯消元法、LU分解法、QR分解法、SVD分解法、迭代法等 MATLAB迭代的三种方式以及相关案例举例 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关

    2024年02月13日
    浏览(51)
  • Android Studio使用SQLite数据库

    1.能使用SQLiteDatabase类操作数据库与表 2.能使用SQLiteDatabaseHelper类操作数据库与表 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。 SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过

    2024年02月01日
    浏览(48)
  • Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)

    运行有问题或需要源码请点赞关注收藏后评论区留言 在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。 首先要给

    2024年02月09日
    浏览(64)
  • Android Studio中获取sha1证书指纹数据的方法以及keytool 错误: java.lang.Exception: 密钥库文件不存在: keystore的解决

    Android Studio通过电脑命令提示符获取SHA1 注:1、首先给keytool路径(C:Program FilesJavajdk1.8.0_172bin)加入环境变量。 2、我是直接的E盘根目录下操作的。 第一步、打开电脑命令提示符(运行-cmd); 第二步、命令提示符中敲入:  keytool -genkey -v -keystore debug.keystore -alias androiddebugke

    2024年02月07日
    浏览(51)
  • Android Studio API 33 获取当前连接的WIFI名称

    常规流程 以下内容在 API 33 成功实现,低版本API还请自行尝试(仅推荐 API 29 - 33 用户食用) 先(至少)添加以下权限到你的 AndroidManifest.xml 文件 在需要使用的Activity类中,添加以下代码: 从 Android 10 (API 29)开始,需要确保 已经获取了 定位权限 。 requestPermissions() 函数会请

    2024年02月14日
    浏览(44)
  • 安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)

    今天我来分享一下如何使用Android Studio开发一个天气预报APP。在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上。 首先,打开Android Studio并创建一个新的项目。在创建新项目时,我们需要设置项目名称、包名和支持的最低API级别。 为了获取实时天气数据,

    2024年02月08日
    浏览(61)
  • Android 手机运行 JoyCon Droid 并且使用 Amiibo

    PS: 整个过程耗时耗力,经常会断开连接,有些不想搞那么麻烦的人就不要搞了,以免遭受刺激啊,哈哈。 如果想使用并刷Amiibo,必须同时满足以下几个条件: 1. 蓝牙版本需要 5.0 。 2. 可以解开 BootLoader 锁。 3. 安卓版本 = 9.0。 经过了多次刷机,最后终于取得了成功,中间的

    2024年02月04日
    浏览(29)
  • Android Studio实现解析HTML获取图片URL将图片保存到本地

    效果 项目本来是要做成图片保存到手机然后读取数据后瀑布流展示,但是有问题,目前只能做到保存到手机 activity_main.xml MainActivity ImageItem ImageAdapter

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包