将改造数组数据插入到 sqlite

Posted

技术标签:

【中文标题】将改造数组数据插入到 sqlite【英文标题】:Insert retrofit array data into sqlite 【发布时间】:2018-11-10 00:58:31 【问题描述】:

我已经设法使用改造从服务器检索数据,之后我想将它插入到 sqlite 数据库中,但是出现了一些错误。我在做什么这是错的?因为我将它设置到 textview 并显示在输出中。为什么返回为空对象?

我的代码改造部分

    private void loadJSON() 
    Intent intent = getIntent();
    final String getpaspot = intent.getStringExtra("pasport");

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("XXXXXXXXXXXXXXXX")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    RequestInterface request = retrofit.create(RequestInterface.class);
    Call<JSONResponse> call = request.getJSON(getpaspot);
    call.enqueue(new Callback<JSONResponse>() 
        @Override
        public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) 

            if(response.isSuccessful()) 
                JSONResponse jsonResponse = response.body();
                jemaah = new ArrayList<>(Arrays.asList(jsonResponse.getJemaah()));
                adapter = new JemaahAdapter(jemaah);
                recyclerView.setAdapter(adapter);

                //List<Jemaah> jemaahs = jsonResponse.getJemaah();
                for (Jemaah j : jemaah)
                    if (j.getManifest1_no_paspot().equals(getpaspot))
                        reqjemaah = j;

                        String namaJ = reqjemaah.getManifest1_nama().trim();
                        String paspotJ = reqjemaah.getManifest1_no_paspot().trim();
                        String akaunJ = reqjemaah.getManifest1_no_akaun().trim();

                        textView1.setText(namaJ);
                        textView2.setText(paspotJ);
                        textView3.setText(akaunJ);

                        myDb.saveUser(akaunJ, paspotJ, namaJ);
                    
                

            
        

        @Override
        public void onFailure(Call<JSONResponse> call, Throwable t) 
            Log.d("Error",t.getMessage());
        
    );

SQLiteHandler

    public void saveUser(String manifest1_no_akaun, String manifest1_no_paspot, String manifest1_nama) 
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(KEY_NOAKAUN, manifest1_no_akaun );
    values.put(KEY_NOPASPOT, manifest1_no_paspot );
    values.put(KEY_NAMA, manifest1_nama );

    db.insert(TABLE_USER,null, values);
    db.close();

【问题讨论】:

看起来 myDb 为空。 @LeoPelozo,是的,为什么它为空?是因为我使用模型吸气剂检索它吗? 你需要在某个地方初始化它。 saveUser 类是如何调用的?你需要实例化它。 @LeoPelozo 哦,我明白了,谢谢,它有效 【参考方案1】:

您需要在使用SQLiteHandler类对象之前声明和初始化它。

类似的,

SQLiteHandler myDb = new SQLiteHandler(); //add this line
myDb.saveUser(akaunJ, paspotJ, namaJ);

【讨论】:

如果有帮助,请对此答案投票。编码快乐!【参考方案2】:

使用 Realm 将数据存储在数据库中。 无需声明其数据库结构即可存储类的对象。更方便。

【讨论】:

以上是关于将改造数组数据插入到 sqlite的主要内容,如果未能解决你的问题,请参考以下文章

Winform里添加SqliteSqlite数据库引用的步骤

为啥我的改造代码没有在数据库中插入数据?

我正在尝试将数据插入到对象的二维数组中

如何将json数组插入mysql数据库

将动态数据从数组对象插入到引导模式中 - vanilla javascript

如何将对象插入到对象内部的数组中?