将改造数组数据插入到 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数据库引用的步骤