2016-03-23 105 views
0

我似乎無法將stringbuilder保存到我的數據庫文件。我無法理解ContentValues.putAll是如何工作的,因爲我認爲這是我需要解決我的問題的方法。這是與問題相關的代碼。在SQLiteDatabase中保存StringBuilder

我想我需要做的是有一個變量存儲兩個「etNameString」和「strReturnedAddress」,然後在我的主要活動「DatabaseOperations.updateDatabase()」。我需要有下面的語句:

args.putAll(values)

但我不知道如何將兩個值都保存在一個變量中。請原諒我的天真,我很新。提前致謝。

插入行的方法:

**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)"; 
+0

試試這個'args.put(COL_2,Address.toString());',如果檢查的logcat有任何錯誤 – Yazan

+0

非常感謝你! –

回答

0

兩個問題。一個用戶Yazan在他們的評論中提到,你應該從你的StringBuilderargs.put(COL_2, Address.toString());

字符串的第二個問題是您在您的DatabaseOperations String類CREATE。你沒有得到任何分離的兩個列名(注意:第一TEXT後的逗號和空格):

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

非常感謝!我真的很感謝你對我的問題的幫助:) –