2017-07-03 111 views
1

嗨,大家好,我需要你的幫助。我在我的應用程序中創建SQLite數據庫,並將數據插入到其中。現在我想從中檢索數據,但我只想插入一個數據並檢索它,然後將其顯示到TextView中。android studio從Sqlite數據庫檢索數據並將其顯示到textview

請幫助我這是我第一次使用SQLite數據庫。

public class Db_sqlit extends SQLiteOpenHelper{ 

    String TABLE_NAME = "BallsTable"; 

    public final static String name = "db_data"; 

    public Db_sqlit(Context context) { 
     super(context, name, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table "+TABLE_NAME+" (id INTEGER PRIMARY KEY AUTOINCREMENT, ball TEXT)"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
     onCreate(db); 
    } 

    public boolean insertData(String balls){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 

     contentValues.put("ball",balls); 

     long result = db.insert(TABLE_NAME,null,contentValues); 
     if(result == -1){ 
      return false; 
     } 
     else 
      return true; 
    } 

    public void list_balls(TextView textView) { 

     Cursor res = this.getReadableDatabase().rawQuery("select ball from "+TABLE_NAME+"",null); 
     textView.setText(""); 
     while (res.moveToNext()){ 
      textView.append(res.getString(1)); 
     } 
    } 
} 
+0

什麼問題? –

+0

我沒有問題,但我不知道如何從Sqlite數據庫中檢索數據,我想從Sqlite數據庫檢索一個數據並將其顯示到Textview中可以幫助我嗎? –

+0

好的,但你剛剛發佈了'SQLiteOpenHelper'類,你從哪裏調用'insertData'? –

回答

1

這是我如何實現這一目標的一個例子。

在這個例子中,我將storeretrieve一個學生的名字和年齡。

首先創建一個類,我打電話給我

DBManager.java

public class DBManager { 
private Context context; 
private SQLiteDatabase database; 
private SQLiteHelper dbHelper; 

public DBManager(Context c) { 
    this.context = c; 
} 

public DBManager open() throws SQLException { 
    this.dbHelper = new SQLiteHelper(this.context); 
    this.database = this.dbHelper.getWritableDatabase(); 
    return this; 
} 

public void close() { 
    this.dbHelper.close(); 
} 

public void insert(String name, String desc) { 
    ContentValues contentValue = new ContentValues(); 
    contentValue.put(SQLiteHelper.NAME, name); 
    contentValue.put(SQLiteHelper.AGE, desc); 
    this.database.insert(SQLiteHelper.TABLE_NAME_STUDENT, null, contentValue); 
} 


public Cursor fetch() { 
    Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_STUDENT, new String[]{SQLiteHelper._ID, SQLiteHelper.NAME, SQLiteHelper.AGE}, null, null, null, null, null); 
    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 
    return cursor; 
} 

public int update(long _id, String name, String desc) { 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(SQLiteHelper.NAME, name); 
    contentValues.put(SQLiteHelper.AGE, desc); 
    return this.database.update(SQLiteHelper.TABLE_NAME_STUDENT, contentValues, "_id = " + _id, null); 
} 

public void delete(long _id) { 
    this.database.delete(SQLiteHelper.TABLE_NAME_STUDENT, "_id=" + _id, null); 
    } 
} 

然後創建一個SQLiteOpenHelper我打電話給我

SQLiteHelper.java

public class SQLiteHelper extends SQLiteOpenHelper { 
public static final String AGE = "age"; 
private static final String CREATE_TABLE_STUDENT = " create table STUDENTS (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL , age TEXT);"; 
private static final String DB_NAME = "STUDENTS.DB"; 
private static final int DB_VERSION = 1; 
public static final String NAME = "name"; 
public static final String TABLE_NAME_STUDENT = "STUDENTS"; 
public static final String _ID = "_id"; 

public SQLiteHelper(Context context) { 
    super(context, DB_NAME, null, 1); 
} 

public void onCreate(SQLiteDatabase db) { 
    Log.e("SQLITE", "table reated"); 
    db.execSQL(CREATE_TABLE_STUDENT); 
} 

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS STUDENTS"); 
    onCreate(db); 
} 

} 

要添加一個新的學生,你會打電話:

在這個例子中我把文本從EditText,並單擊按鈕時我檢查EditText爲空。

btnAdd.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      if (edtName.getText().toString().trim().length() == 0) { 
       Toast.makeText(getApplicationContext(), "Please provide your students name", Toast.LENGTH_SHORT).show(); 

      } else 
       try { 
        if (edtAge.getText().toString().trim().length() != 0) { 

         String name = edtName.getText().toString().trim(); 
         String age = edtAge.getText().toString().trim(); 
         String query = "Select * From STUDENTS where name = '"+name+"'"; 
         if(dbManager.fetch().getCount()>0){ 
          Toast.makeText(getApplicationContext(), "Already Exist!", Toast.LENGTH_SHORT).show(); 
         }else{ 
          dbManager.insert(name, age); 

          Toast.makeText(getApplicationContext(), "Added successfully!", Toast.LENGTH_SHORT).show(); 

         } 

        } else { 

         Toast.makeText(getApplicationContext(), "please provide student age!", Toast.LENGTH_SHORT).show(); 


        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 


     } 
    }); 

更新: 在這裏,我把文本中EditText,並單擊按鈕時更新學生。

btnupdate.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      String name = nameText.getText().toString(); 
      String age = ageText.getText().toString(); 

      dbManager.update(_id, name, age); 
      Toast.makeText(getApplicationContext(), "Updated successfully!", Toast.LENGTH_SHORT).show(); 


     } 
    }); 

要刪除您可以撥打此:

dbManager.delete(_id); 
      Toast.makeText(getApplicationContext(), "Deleted successfully!", Toast.LENGTH_SHORT).show(); 

,並獲取數據從sqlite的時候,你可以這樣做:

在這裏,我得到了學生的姓名並將其顯示在TextView

DBManager dbManager = new DBManager(getActivity()); 
    dbManager.open(); 

    Cursor cursor = dbManager.fetch(); 
    cursor.moveToFirst(); 
    final TextView studentName = (TextView) getActivity().findViewById(R.id.nameOfStudent); 
    studentName.settext(cursor.getString(0)); 
+0

非常感謝你的努力,但我不想從textview中獲取數據並將其插入到數據中。我想從db_sqlit中檢索數據,當我檢索到它時,我將它設置爲textview –

+0

,這樣數據就已經插入數據庫了? –

+0

是的,我想檢索它,但我只插入一個字符串,我想檢索它不檢索所有數據,當我檢索它,我想將其設置爲文本視圖 –

相關問題