感谢 Stackoverflow 的贡献者,我能够在没有任何 Java 知识的情况下使用 Android Studio 开发我的第一个 Android 应用程序。这是一个独特的界面条码扫描应用程序(使用 ZXing),带有两个 EditText 字段和一个 OK 按钮。这两个字段都填写了条形码扫描仪。
我想将数据存储在本地数据库的两个 EditText 字段中,其中包含两列(用于两个字段)和一个表。
我不是在要求代码,我只是要求指导方针和建议来推动我的应用程序的开发。
谢谢
感谢 Stackoverflow 的贡献者,我能够在没有任何 Java 知识的情况下使用 Android Studio 开发我的第一个 Android 应用程序。这是一个独特的界面条码扫描应用程序(使用 ZXing),带有两个 EditText 字段和一个 OK 按钮。这两个字段都填写了条形码扫描仪。
我想将数据存储在本地数据库的两个 EditText 字段中,其中包含两列(用于两个字段)和一个表。
我不是在要求代码,我只是要求指导方针和建议来推动我的应用程序的开发。
谢谢
首先,您应该阅读此https://developer.android.com/guide/topics/data/data-storage
现在,请记住所有相关因素,自行决定最适合您的需求。
对我来说看起来像是一个宠物项目,你只想存储两个值,我建议你使用 SharedPreferences 存储它们
参考https://developer.android.com/training/data-storage/shared-preferences
我认为您应该使用 Sqlite 数据库,这就是您应该使用它的方式。
DBHelper.java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "MyDBName.db";
public static final String CONTACTS_TABLE_NAME = "barcode";
public static final String CONTACTS_COLUMN_ID = "id";
public static final String CONTACTS_COLUMN_TEXT1 = "field1";
public static final String CONTACTS_COLUMN_TEXT2 = "field2";
private HashMap hp;
public DBHelper(Context context) {
super(context, DATABASE_NAME , null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table barcode" +
"(id integer primary key, field1 text, field2 text)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS barcode");
onCreate(db);
}
public boolean insertData (String text1, String text2) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("field1", text1);
contentValues.put("field2", text2);
db.insert("barcode", null, contentValues);
return true;
}
public Cursor getData(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from barcode where id="+id+"", null );
return res;
}
public boolean updateBarcode (Integer id, String text1, String text2) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("field1", text1);
contentValues.put("field2", text2);
db.update("barcode", contentValues, "id = ? ", new String[] { Integer.toString(id) } );
return true;
}
您的活动或片段
private DBHelper mydb ;
mydb = new DBHelper(this);
//insert
if(mydb.insertBarcode(EditText1.getText().toString(),
EditText2.getText().toString())){
Toast.makeText(getApplicationContext(), "done",
Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(getApplicationContext(), "not done",
Toast.LENGTH_SHORT).show();
}
//Read
Cursor getBarcode= mydb.getData(id_to_search);
您还可以添加更多功能,例如从表中读取完整数据等DBHelper.java
为什么选择数据库来存储这两个值?你考虑过偏好吗?我觉得比较合适。