2013-03-18 182 views
0

所以TextView的我,我知道是從數據庫加載但不正是我想要......將數據庫加載到textview中?

我會盡力解釋盡我所能:

數據庫:

public class DBAdapter_Name { 
public static final String KEY_ROWID = "_id"; 
public static final String KEY_ITEM = "name"; 

private static final String TAG = "DBAdapter"; 

private static final String DATABASE_NAME = "NameDB"; 
private static final String DATABASE_TABLE = "charactername"; 
private static final int DATABASE_VERSION = 5; 

private static final String DATABASE_CREATE = "create table if not exists charactername (_id integer primary key autoincrement, " 
     + "name VARCHAR not null);"; 

private final Context context; 

private DatabaseHelper DBHelper_name; 
private static SQLiteDatabase dbname; 

public DBAdapter_Name(Context ctx) { 
    this.context = ctx; 
    DBHelper_name = new DatabaseHelper(context); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper { 
    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase dbname) { 
     try { 
      dbname.execSQL(DATABASE_CREATE); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase dbname, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     dbname.execSQL("DROP TABLE IF EXISTS charactername"); 
     onCreate(dbname); 
    } 
} 

// ---opens the database--- 
public DBAdapter_Name open() throws SQLException { 
    dbname = DBHelper_name.getWritableDatabase(); 
    return this; 
} 

// ---closes the database--- 
public void close() { 
    DBHelper_name.close(); 
} 

// ---insert a record into the database--- 
public long insertRecord(String name) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_ITEM, name); 
    return dbname.insert(DATABASE_TABLE, null, initialValues); 
} 

// ---deletes a particular record--- 
public boolean deleteContact(long rowId) { 
    return dbname.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; 
} 

// ---retrieves all the records--- 
public static Cursor getAllRecords() { 
    return dbname.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_ITEM}, 
      null, null, null, null, null, null); 
} 

// ---retrieves a particular record--- 
public Cursor getRecord(long rowId) throws SQLException { 
    Cursor mCursor = dbname.query(true, DATABASE_TABLE, new String[] { 
      KEY_ROWID, KEY_ITEM }, KEY_ROWID + "=" + rowId, null, null, 
      null, null, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

public int deleteAll(){ 
    return 0; 

    } 

// ---updates a record--- 
public boolean updateRecord(long rowId, String name) { 
    ContentValues args = new ContentValues(); 
    args.put(KEY_ITEM, name); 

    return dbname.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; 
} 

我如何插入記錄:

public class CreateNew extends Activity { 

DBAdapter_Name dbname = new DBAdapter_Name(this); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.create_new) 
       Button btnCreate = (Button) findViewById(R.id.btnCreate); 
    btnCreate.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      EditText editText1 = (EditText) findViewById(R.id.editText1); 
      String nameTxt = editText1.getText().toString(); 
Intent PlayScreen = new Intent(getApplicationContext(), 
         PlayScreen.class); 
       // ------------------------------------------------------------------------------------------------------------------------------------ 
       Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
       Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 
       Spinner spinner3 = (Spinner) findViewById(R.id.spinner3); 
       // ------------------------------------------------------------------------------------------------------------------------------------ 
       dbname.open(); 
       long insertedRowId = dbname.insertRecord(editText1.getText().toString()); //Get the rowId which was inserted. 
       dbname.close(); 
       PlayScreen.putExtra("strAlliance", spinner1 
         .getSelectedItem().toString()); 
       PlayScreen.putExtra("strRace", spinner2.getSelectedItem() 
         .toString()); 
       PlayScreen.putExtra("strClass", spinner3.getSelectedItem() 
         .toString()); 
       // ------------------------------------------------------------------------------------------------------------------------------------ 
       startActivityForResult(PlayScreen, 0); 
      } 
     } 
    }); 

    Button btnMoreInfo = (Button) findViewById(R.id.btnMoreInfo); 
    btnMoreInfo.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent MoreInfo = new Intent(v.getContext(), MoreInfo.class); 
      startActivity(MoreInfo); 

     } 
    }); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    Intent BeforeYouBegin = new Intent(getApplicationContext(), 
      BeforeYouBegin.class); 
    startActivity(BeforeYouBegin); 
    finish(); 
} 

的EDITTEXT顯然那裏你可以輸入你想你的名字是什麼

而且我是如何顯示的記錄:

public void DisplayRecord(Cursor c) { 
    TextView textViewStrName = (TextView) findViewById(R.id.textViewStrName); 
    Cursor result = dbname.getRecord(insertedRowId); 
    int columnIndex = result.getColumnIndex(DBAdapter_Name.KEY_ITEM); 
    String insertedName = result.getString(columnIndex); 
    textViewStrName.setText(insertedName); 
} 

現在不管你,當你去查看什麼類型的鍵入EDITTEXT箱的東西,你看到的是兩個字:名稱。

因此它讀取數據庫而不是如何我希望它....

+1

DBAdapter_Name.KEY_ITEM =「name」,這就是你得到的。 – 2013-03-18 02:52:42

+1

這不是從數據庫中讀取......你只是打印該列的名稱 – Matthieu 2013-03-18 02:53:04

+0

那麼我怎樣才能讓它顯示什麼是鍵入的? – 2013-03-18 03:00:44

回答

0

要顯示你剛剛在數據庫中輸入,這是你需要做的事情。

//Inserting the value into DB. 
dbname.open(); 
long insertedRowId = dbname.insertRecord(editText1.getText().toString()); //Get the rowId which was inserted. 
dbname.close(); 

//Retrieving that value from DB & displaying it. 
Cursor result = dbname.getRecord(insertedRowId);; 
int columnIndex = result.getColumnIndex(DBAdapter_Name.KEY_ITEM); 
String insertedName = result.getString(columnIndex); 
textViewStrName.setText(insertedName); 
+0

什麼是:insertedRowId? – 2013-03-18 03:49:52

+0

'insertedRowId'是''insertRecord()'方法插入數據庫的行的id。 – SudoRahul 2013-03-18 03:53:12

+0

好的,抱歉,我仍然困惑。我把你所說的和'dbname.getRecord(insertedRowId)'加下劃線並給出錯誤。我假設我要用某種東西代替它? – 2013-03-18 03:56:02

0

試試這個代碼

String name=""; 
dbname.open(); 
long rowId = dbname.insertRecord(editText1.getText().toString()); 
Cursor c = dbname.getRecord(rowId); 
    startManagingCursor(c); 
    if(c.moveToFirst()){ 
     do{ 
      name = c.getString(1); 
     }while (c.moveToNext()); 
    } 
    dbname.close(); 
    c.close(); 

    textViewStrName.setText(name); 

希望這有助於你。