一、执行过程:

   首先需要获取操作数据库帮助对象 Databasehelper , 然后通过这个对象调用这个对象的getRdbStore方法 , 这个方法需三个参数 1. StoreConfig类型的参数 , 2.version(整型) , 3.抽象类 。 这个抽象类里面有两方法 onCreate 和 onUpgrade , 其中 onCreate 是在创建数据表示被调用  换句话说就是监听数据表的创建的 而 onUpgrade 是监听数据表的提升和更新的 ;调用这个方法的目的是为了得到RdbStore对象 在鸿蒙开发中这个对象是专门用来操作数据表的 , 而onCreate方法里携带了一个参数就是RdbStore 对象 。 然后就可以使用这个对象来操作数据表执行sql语句了 ,最后注意:

别忘记关闭资源RdbStore  ;

二、图解过程:

 

三、代码实现:

xml代码:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="vertical">

    <Button
        ohos:id="$+id:sqlite_select_01_"
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:text_size="30vp"
        ohos:text="查询数据表"
        />

</DirectionalLayout>

java代码:


import com.example.server.ResourceTable;
import com.example.server.baseability.baseability;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.app.Context;
import ohos.data.DatabaseHelper;
import ohos.data.preferences.Preferences;
import ohos.data.rdb.RdbOpenCallback;
import ohos.data.rdb.RdbStore;
import ohos.data.rdb.StoreConfig;
import ohos.data.resultset.ResultSet;

public class sqliteSlice extends baseability {
    public  DatabaseHelper helper ;
    public StoreConfig config ;
    private final String NAME = "data.sqlite" ;
    private RdbStore rdbStore ;
    private Button select ;
//    RdbStore rdbStore ;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_sqlite);
        getcpt();
        event();
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

    @Override
    public void getcpt() {
       select = (Button)findComponentById(ResourceTable.Id_sqlite_select_01_) ;
    }

    @Override
    public void init() {

    }

    @Override
    public void event() {
        select.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                create(NAME , getContext());
            }
        });

    }
    //创建表
    private void create(String name , Context context){
        helper = new DatabaseHelper(context) ;
        config =StoreConfig.newDefaultConfig(name);
        helper.getRdbStore(config, 1, new RdbOpenCallback() {
            @Override
            public void onCreate(RdbStore rdbStore) {
                //创建表的时候调用
                String SQL = "create table info (id int(10) ,  name varchar(30))";
                String sql  ="insert into info values(1, 'keven') ;";

                rdbStore.executeSql(SQL);
                System.out.println("info创建成功");
                rdbStore.executeSql(sql);
                System.out.println("插入成功");
                select(rdbStore);
            }

            @Override
            public void onUpgrade(RdbStore rdbStore, int i, int i1) {

            }
        });
//        rdbStore = helper.getRdbStore(config, 1, callback , null); //用它来进行操作

    }

    public  void  select (RdbStore rdbStore){
        String sql = "select * from info;" ;
        ResultSet resultSet = rdbStore.querySql(sql, null);
        if (resultSet.goToFirstRow()){
            System.out.println("数据为:"+ resultSet.getInt(0) +" "+ resultSet.getString(1));
            System.out.println("查询完毕");
        }else {
            System.out.println("查找不到");
        }
    }
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐