2016-11-06 4 views
1

Gibt es eine Möglichkeit, eine Spalte aus der erstellten Datenbank abzurufen und die Werte in der Spalte in einem Array zu speichern?SQLiteDatabase: Spalte abrufen und in ein Array speichern

Mein Hauptziel ist, Werte aus einer Spalte zu erhalten und sie in einem Spinner zu speichern.


Suchen Sie unten nach Code! um die Säule packen PATIENT_FNAME und speichern alle diese Werte in einem Array

PatientDbHelper.java

package tanav.sharma; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.provider.BaseColumns; 
import android.util.Log; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Tanav on 11/4/2016. 
*/ 
public class PatientDbHelper extends SQLiteOpenHelper { 


    private static final String DATABASE_NAME = "PATIENTINFO.db"; 
    private static final int DATABASE_VERSION = 1; 

    private static final String CREATE_QUERY = "CREATE TABLE " 
      + PatientInfo.NewPatientInfo.TABLE_NAME + " (" 
      + PatientInfo.NewPatientInfo.PATIENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + PatientInfo.NewPatientInfo.PATIENT_FNAME+ " TEXT," 
      + PatientInfo.NewPatientInfo.PATIENT_LNAME+" TEXT," 
      + PatientInfo.NewPatientInfo.PATIENT_DEPARTMENT+" TEXT);"; 


    private static final String CREATE_QUERY_TEST = 
      "CREATE TABLE " 
        + TestInfo.NewTestInfo.TABLE_TEST_NAME + " (" 
        + TestInfo.NewTestInfo.TEST_BlOOD_PRESSURE + " TEXT," 
        + TestInfo.NewTestInfo.TEST_BLOOD_OXYGEN_LEVEL + " TEXT," 
        + TestInfo.NewTestInfo.TEST_RESPITORY_RATE +" TEXT," 
        + TestInfo.NewTestInfo.TEST_HEART_RATE +" TEXT);"; 

    public PatientDbHelper(Context context){ 

     super(context,DATABASE_NAME,null,DATABASE_VERSION); 
     Log.e("DATABASE OPERATIONS","Database created/opened ..."); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_QUERY); 
     db.execSQL(CREATE_QUERY_TEST); 
     Log.e("DATABASE OPERATIONS","Table created..."); 

    } 

    public void addInformations(int id, String fname, String lname, String department, SQLiteDatabase db){ 

     ContentValues contentValues = new ContentValues(); 
     if (id != 0){ contentValues.put(PatientInfo.NewPatientInfo.PATIENT_ID, id); } 
     contentValues.put(PatientInfo.NewPatientInfo.PATIENT_FNAME,fname); 
     contentValues.put(PatientInfo.NewPatientInfo.PATIENT_LNAME,lname); 
     contentValues.put(PatientInfo.NewPatientInfo.PATIENT_DEPARTMENT,department); 


     db.insert(PatientInfo.NewPatientInfo.TABLE_NAME, null,contentValues); 

     Log.e("DATABASE OPERATIONS","One in row inserted..."); 
    } 

    public void addTestInformation(/*String BP*/ int BL, int RR, int HR, SQLiteDatabase db){ 

     ContentValues contentTestValues = new ContentValues(); 
     //contentTestValues.put(TestInfo.NewTestInfo.TEST_BlOOD_PRESSURE, BP); 
     contentTestValues.put(TestInfo.NewTestInfo.TEST_BLOOD_OXYGEN_LEVEL,BL); 
     contentTestValues.put(TestInfo.NewTestInfo.TEST_RESPITORY_RATE, RR); 
     contentTestValues.put(TestInfo.NewTestInfo.TEST_HEART_RATE, HR); 


     db.insert(TestInfo.NewTestInfo.TABLE_TEST_NAME, null, contentTestValues); 

     Log.e("DATABASE OPERATIONS", "One in row inserted..."); 
    } 

    /* public Cursor getPatientDepartment(String departments, SQLiteDatabase sqLiteDatabase){ 
     String[] projections = {PatientInfo.NewPatientInfo.PATIENT_FNAME, PatientInfo.NewPatientInfo.PATIENT_LNAME, PatientInfo.NewPatientInfo.PATIENT_DEPARTMENT}; 
     String selection = PatientInfo.NewPatientInfo.PATIENT_DEPARTMENT+ " LIKE ?"; 
     String[] selection_args = {departments}; 

     Cursor cursor = sqLiteDatabase.query(PatientInfo.NewPatientInfo.TABLE_NAME,projections,selection,selection_args,null,null,null); 

     return cursor; 

    }*/ 


    public Cursor getPatientsId(int patient_id,SQLiteDatabase sqLiteDatabase){ 

     String[] projections = {PatientInfo.NewPatientInfo.PATIENT_ID, PatientInfo.NewPatientInfo.PATIENT_FNAME, PatientInfo.NewPatientInfo.PATIENT_DEPARTMENT}; 
     String selection = PatientInfo.NewPatientInfo.PATIENT_ID+ " LIKE ?"; 
     String convert = String.valueOf(patient_id); 
     String[] selection_args = {convert}; 

     Cursor cursor = sqLiteDatabase.query(PatientInfo.NewPatientInfo.TABLE_NAME,projections,selection,selection_args,null,null,null); 
     return cursor; 

    } 

    public Cursor getInformations(SQLiteDatabase db){ 
     Cursor cursor; 
     String[] projections = {PatientInfo.NewPatientInfo.PATIENT_FNAME, PatientInfo.NewPatientInfo.PATIENT_LNAME, PatientInfo.NewPatientInfo.PATIENT_DEPARTMENT}; 
     cursor = db.query(PatientInfo.NewPatientInfo.TABLE_NAME,projections,null,null,null,null,null); 
     return cursor; 
    } 

    public Cursor getTestInformation(SQLiteDatabase db){ 
     Cursor cursorTest; 
     String[] testProjections = {TestInfo.NewTestInfo.TEST_HEART_RATE, TestInfo.NewTestInfo.TEST_RESPITORY_RATE, TestInfo.NewTestInfo.TEST_BLOOD_OXYGEN_LEVEL, TestInfo.NewTestInfo.TEST_BlOOD_PRESSURE}; 
     cursorTest = db.query(TestInfo.NewTestInfo.TABLE_TEST_NAME,testProjections,null,null,null,null,null); 
     return cursorTest; 
    } 



    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    } 
} 

Oben ist meine Datenbank-Handler-Klasse, die ich will. Später, in meiner AddTest.java-Datei, möchte ich diese Werte in einem Spinner anzeigen.

Unten ist mein AddTest.java

package tanav.sharma; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.database.sqlite.SQLiteDatabase; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.Spinner; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.List; 

public class AddTest extends AppCompatActivity { 

    private RadioGroup radioGroup; 
    private RadioButton radioButton; 

    EditText etBL, etRR, etHBR; 
    Spinner patients; 
    Context context; 
    PatientDbHelper patientDbHelper; 

    SQLiteDatabase sqLiteDatabase; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_test); 

     getSupportActionBar().setTitle(R.string.add_test); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 



     etBL = (EditText) findViewById(R.id.etBOL); 
     etRR = (EditText) findViewById(R.id.etRR); 
     etHBR = (EditText) findViewById(R.id.etHBR); 

     patients = (Spinner) findViewById(R.id.spinner); 



    } 

    public void addTest(View view){ 

     radioGroup = (RadioGroup) findViewById(R.id.radio); 
     Button addTest = (Button) findViewById(R.id.addTest); 

     addTest.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int selectedId = radioGroup.getCheckedRadioButtonId(); 
       RadioButton radioButton = (RadioButton) findViewById(selectedId); 
      } 
     }); 


     //String BP = radioButton.getText().toString(); 
     int BL = Integer.parseInt(etBL.getText().toString()); 
     int RR = Integer.parseInt(etRR.getText().toString()); 
     int HR = Integer.parseInt(etHBR.getText().toString()); 

     patientDbHelper = new PatientDbHelper(this); 
     sqLiteDatabase = patientDbHelper.getWritableDatabase(); 
     patientDbHelper.addTestInformation(BL,RR,HR,sqLiteDatabase); 
     Toast.makeText(getBaseContext(),"Data Saved",Toast.LENGTH_LONG).show(); 
     patientDbHelper.close(); 

    }  
} 
+0

Sie sollten nicht 'sqLiteDatabase' in der Aktivität benötigen. Der Zweck von SqliteOpenHelper ist es, diese Klasse zu verbergen. Sie sollten die Datenbank innerhalb Ihrer Methoden erhalten, nicht als Parameter übergeben –

Antwort

0

Sie etwas tun können, wie

List<String> names = new ArrayList<>(); 
Cursor cursor = patientDbHelper.getInformations(sqLiteDatabase); 
if (cursor != null){ 
    while(cursor.moveToNext()){ 
     names.add(cursor.getString(cursor.getColumnIndex(PatientInfo.NewPatientInfo.PATIENT_FNAME))); 
    } 
    cursor.close(); 
} 
+0

wo würde ich das hinzufügen? in der Datenbank Handler-Klasse oder meine "AddTest.java" onCreate-Methode? –

+0

AddTest.java on onCreate .. Sie können dann die 'List' verwenden, um den Spinner zu füllen – Peralta

+0

@ user5425093 ok Ich habe meine Antwort so bearbeitet, dass sie besser zu Ihrem Code passt, wie Sie es vorgeschlagen haben. – Peralta

Verwandte Themen