在 SQLiteDatabase 中保存 StringBuilder
Saving StringBuilder in SQLiteDatabase
我似乎无法将 stringbuilder 保存到我的数据库文件中。我不明白 ContentValues.putAll 是如何工作的,因为我认为这就是我需要解决问题的方式。这是与问题相关的代码。
我想我需要做的是在我的主 activity 中有一个变量,它存储 'etNameString' 和 'strReturnedAddress' 然后在 'DatabaseOperations.updateDatabase()' 中..我需要有以下声明:
args.putAll(值)
但我不知道如何将两个值都保存在一个变量中。请原谅我的天真,我对此很陌生。提前致谢。
插入行方法:
**DatabaseOperations class**
public void updateDatabase(String Name, StringBuilder Address) {
SQLiteDatabase myDB = this.getWritableDatabase();
ContentValues args = new ContentValues();
args.put(COL_1, Name);
args.put(COL_2, Address);
myDB.insert(TABLE_NAME, null, args);
Log.d("Database Operations", "Entry Successful");
}
使用参数调用 updateDatabase:(strReturnedAddress 在未显示的代码中定义)
**MainActivity class**
//Updates Database with Name // Shows Toast // Sets Text Field to Blank
EditText etName = (EditText) findViewById(R.id.etName);
String etNameString = etName.getText().toString();
db.updateDatabase(etNameString, strReturnedAddress);
Toast toast = Toast.makeText(MainActivity.this, "Entry Saved", Toast.LENGTH_SHORT);
toast.show();
etName.setText(" ");
设置我的数据库:
**DatabaseOperations class**
public static final String DATABASE_NAME = "HDL_DB";
public static final String TABLE_NAME = "HDL_Table";
public static final String COL_1 = "Name";
public static final String COL_2 = "Address";
public String CREATE = "CREATE TABLE " + TABLE_NAME + " (" +
COL_1 + " TEXT" + COL_2 + " TEXT)";
两个问题。用户 Yazan 在他们的评论中提到的一个,你应该从你的 StringBuilder
和 args.put(COL_2, Address.toString());
中获取字符串
第二个问题是您的 DatabaseOperations class 中的字符串 CREATE
。您没有任何分隔两列名称的内容(请注意第一个 TEXT
之后的逗号和 space):
public String CREATE = "CREATE TABLE " + TABLE_NAME + " (" +
COL_1 + " TEXT, " + COL_2 + " TEXT)";
我似乎无法将 stringbuilder 保存到我的数据库文件中。我不明白 ContentValues.putAll 是如何工作的,因为我认为这就是我需要解决问题的方式。这是与问题相关的代码。
我想我需要做的是在我的主 activity 中有一个变量,它存储 'etNameString' 和 'strReturnedAddress' 然后在 'DatabaseOperations.updateDatabase()' 中..我需要有以下声明:
args.putAll(值)
但我不知道如何将两个值都保存在一个变量中。请原谅我的天真,我对此很陌生。提前致谢。
插入行方法:
**DatabaseOperations class**
public void updateDatabase(String Name, StringBuilder Address) {
SQLiteDatabase myDB = this.getWritableDatabase();
ContentValues args = new ContentValues();
args.put(COL_1, Name);
args.put(COL_2, Address);
myDB.insert(TABLE_NAME, null, args);
Log.d("Database Operations", "Entry Successful");
}
使用参数调用 updateDatabase:(strReturnedAddress 在未显示的代码中定义)
**MainActivity class**
//Updates Database with Name // Shows Toast // Sets Text Field to Blank
EditText etName = (EditText) findViewById(R.id.etName);
String etNameString = etName.getText().toString();
db.updateDatabase(etNameString, strReturnedAddress);
Toast toast = Toast.makeText(MainActivity.this, "Entry Saved", Toast.LENGTH_SHORT);
toast.show();
etName.setText(" ");
设置我的数据库:
**DatabaseOperations class**
public static final String DATABASE_NAME = "HDL_DB";
public static final String TABLE_NAME = "HDL_Table";
public static final String COL_1 = "Name";
public static final String COL_2 = "Address";
public String CREATE = "CREATE TABLE " + TABLE_NAME + " (" +
COL_1 + " TEXT" + COL_2 + " TEXT)";
两个问题。用户 Yazan 在他们的评论中提到的一个,你应该从你的 StringBuilder
和 args.put(COL_2, Address.toString());
第二个问题是您的 DatabaseOperations class 中的字符串 CREATE
。您没有任何分隔两列名称的内容(请注意第一个 TEXT
之后的逗号和 space):
public String CREATE = "CREATE TABLE " + TABLE_NAME + " (" +
COL_1 + " TEXT, " + COL_2 + " TEXT)";