2017-07-03 3 views
1

こんにちは、私はあなたの助けが必要です。私は自分のアプリでSQLiteデータベースを作成し、それにデータを挿入します。そして今、私はそれからデータを取得したいが、ただ一つのデータを挿入してそれを取り出してTextViewに表示したい。アンドロイドスタジオはSqliteデータベースからデータを取得し、それをテキストビューに表示します

私は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データベースから1つのデータを取得し、それをTextviewに表示したいのですか? –

+0

あなたは 'SQLiteOpenHelper'クラスを投稿しましたが、どこから' insertData'を呼び出しますか? –

答えて

1

これは私がこれを達成した例です。

この例では、storeretrieveという生徒の名前と年齢を入力します。

ファーストクラスを作成し、私はその後、私は

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); 
} 

} 
SQLiteHelper.java

鉱山と呼ばれるSQLiteOpenHelperを作成

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); 
    } 
} 

DBManager.java

鉱山と呼ばれます私は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のデータを取得し、あなたはこれを行うことができます。

ここで私は学生の名前を取得aに表示する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からデータを取得したいと私はそれを取得するとき、私はテキストビューでそれを設定します –

+0

データはすでにデータベースに挿入されているので? –

+0

はい、私はそれを取得したいと思いますが、私はただ1つの文字列を挿入し、すべてのデータを取得しないようにしたいのですが、それを取得するときにテキストビューに設定したいです –

関連する問題