gpt4 book ai didi

android - 无法将用户输入保存到 Android 中的数据库

转载 作者:行者123 更新时间:2023-11-29 21:39:56 24 4
gpt4 key购买 nike

我是 android 的新手,我正在开发一个将用户输入保存到数据库的应用程序。但是,由于某些原因,当用户按下保存按钮时,我看不到用户已经保存的数据。你能帮我保存这段代码的值吗?

activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<Spinner
android:id="@+id/spn_District"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<Spinner
android:id="@+id/spn_Province"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<Spinner
android:id="@+id/spn_InfoType"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/txt_Date"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/txt_Remarks"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

Cons_IReport.java(构造函数)

public Cons_iReport(String district, String province, String infoType, String rDateObserved, String rRemarks){
this._district = district;
this._province = province;
this._infoType = infoType;
this._dateObserved = rDateObserved;
this._remarks = rRemarks;
}

DatabaseHandler.java

public void SaveReport(Cons_iReport save){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Constants.REPORT_DISTRICT, save.getDistrict());
values.put(Constants.REPORT_PROVINCE, save.getProvince());
values.put(Constants.REPORT_INFOTYPE, save.getInfoType());
values.put(Constants.REPORT_DATEOBSERVED, save.getDateObserved());
values.put(Constants.REPORT_REMARKS, save.getRemarks());

db.insert(Constants.TABLE_REPORT, null, values);
db.close();
}

MainActivity.java

btn_Save.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
String rDistrict = spn_District.getSelectedItem().toString();
String rProvince = spn_Province.getSelectedItem().toString();
String rInfoType = spn_InfoType.getSelectedItem().toString();
String rDateObserved = txt_Date.getText().toString();
String rRemarks = txt_Remarks.getText().toString();

databaseHandler.SaveReport(new Cons_iReport(rDistrict, rProvince, rInfoType, rDateObserved, rRemarks));
Toast.makeText(getApplicationContext(), "SAVED!\n" + rDistrict + "\n" + rProvince + "\n" + rInfoType + "\n" + rDateObserved + "\n" + rRemarks, Toast.LENGTH_SHORT).show();
}
});

最佳答案

这听起来不对,但不要关闭 db.close。对 getWritableDatabase 的后续调用将返回相同的、已经关闭的对象。如果使用相同的底层现在关闭的对象,它也可能影响您从数据库读取的能力。

从模拟器中拉出 db 文件并在 SQLite 编辑器中打开它 http://sqliteadmin.orbmu2k.de/可行,但如果您能找到更好的,请使用它。

该数据库的表中是否有任何行?

同样出于调试目的,请尝试使用 insertOrThrow 而不是插入,如果插入失败而不是静默失败,您将得到一个异常。

关于android - 无法将用户输入保存到 Android 中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17460136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com