在SQLiteDatabase中保存StringBuilder

时间:2016-03-23 22:04:02

标签: android sqlite android-sqlite stringbuilder

我似乎无法将stringbuilder保存到我的数据库文件中。我无法理解ContentValues.putAll是如何工作的,因为我认为这是我解决问题的方法。这是与该问题相关的代码。

我认为我需要做的是在我的主要活动中有一个变量,它存储'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)";

1 个答案:

答案 0 :(得分:0)

两个问题。用户Yazan在评论中提到的一个,您应该从StringBuilder args.put(COL_2, Address.toString());获取字符串

第二个问题是您的DatabaseOperations类中的字符串CREATE。你还没有把你的两个列名分开(请注意第一个TEXT之后的逗号和空格):

public String CREATE = "CREATE TABLE " + TABLE_NAME + " (" +
            COL_1 + " TEXT, " + COL_2 + " TEXT)";