Получить данные в виде строки из базы данных SQLite в Android Studio - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу сохранить имя в базе данных SQLite, а затем в другом упражнении я хочу получить это имя в виде строкового значения.Но я не могу получить данные из базы данных.Помоги мне, пожалуйста.Мой код приведен ниже,

Помощник базы данных:

    private static final String TAG = "DatabaseHelper";
    private static final String TABLE_NAME = "user";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";

    public void onCreate(SQLiteDatabase db) {String createTable = 
    "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY 
    AUTOINCREMENT, " + COL2 +" TEXT)"; 
    db.execSQL(createTable);}

    public boolean addData(String item) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL2, item);

            Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);

            long result = db.insert(TABLE_NAME, null, contentValues);

            if (result == -1) {
                return false;
            } else {
                return true;
            }
        }

MainActivity:

    mDatabaseHelper=new DatabaseHelper(this);
    Username=(EditText)findViewById(R.id.user);
    saveBtn=(Button)findViewById(R.id.button);

    saveBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    String newEntry = Username.getText().toString();
                            AddData(newEntry);
                            Username.setText("");

    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                        startActivity(intent);
                    }
                });

            }
            public void AddData(String newEntry) {
                boolean insertData = mDatabaseHelper.addData(newEntry);
        }
        }

HomeActivity:

public class HomeActivity extends AppCompatActivity {

    DatabaseHelper mDatabaseHelper;
    String Username;

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

        mDatabaseHelper = new DatabaseHelper(this);

    }

}

Здесь, в этомДомашняя активность Я хочу получить имя пользователя в виде строки, но я не знаю, как это сделать.Помогите мне, пожалуйста ...

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

проверить эту библиотеку

это очень легко реализовать

https://github.com/wisdomrider/SqliteClosedHelper

0 голосов
/ 31 декабря 2018

Ваш помощник по базам данных:

    private static final String TAG = "DatabaseHelper";
    private static final String TABLE_NAME = "user";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";



private static final String createTable = "CREATE TABLE " + TABLE_NAME + " (" + COL1 +" INTEGER PRIMARY KEY AUTOINCREMENT, " + COL2 +" TEXT)"; // You have written ID inplace of COL1






 public  DatabaseHelper(Context context)
    {

        super(context,DB_NAME,null,1);
    }

 public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(createTable);

    }

public boolean insertData(String name) {

    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    ContentValues contentValues1 =  new ContentValues();
    contentValues1.put(COL2,name);


    long result1 = sqLiteDatabase.insert(TABLE_NAME,null,contentValues1);
    return result1 != -1;
}
public Cursor viewData()
{
    SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
    Cursor cursor ;

    String query = "Select * from " +TABLE_NAME;
    cursor= sqLiteDatabase.rawQuery(query, null);


    return cursor;
}

Ваша основная деятельность:

 mDatabaseHelper=new DatabaseHelper(this);
    Username=(EditText)findViewById(R.id.user);
    saveBtn=(Button)findViewById(R.id.button);

    saveBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    String newEntry = Username.getText().toString();
                            mDatabaseHelper.insertData(newEntry);
                            Username.setText("");

    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                        startActivity(intent);
                    }
                });

            }

        }

Ваша домашняя активность:

public class HomeActivity extends AppCompatActivity {

    DatabaseHelper mDatabaseHelper;
    String Username;


ArrayList<String> listItem;
    ArrayAdapter adapter;
    ListView listView;

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

        mDatabaseHelper = new DatabaseHelper(this);
listView = (ListView) findViewById(R.id.listView);
        listItem = new ArrayList<>();
viewData1();

    }

private void viewData1() {

        Cursor cursor = mDatabaseHelper.viewData();

        if (cursor.getCount() == 0) {

            Toast.makeText(this, "No data to show", Toast.LENGTH_SHORT).show();
        } else {
            while (cursor.moveToNext()) {
                Log.i("message","Data got");

                listItem.add(cursor.getString(1)); // Adding data received to a Listview
            }
            adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listItem);
            listView.setAdapter(adapter);

        }
    }

    }
0 голосов
/ 31 декабря 2018

Чтобы получить данные, вы запускаете запрос, который извлекает данные в курсор.Курсор будет состоять из 0-n строк и будет иметь столько столбцов, сколько определено в запросе.Затем вы перемещаете по строкам и используете соответствующие курсоры get ????? для получения фактических данных.

В качестве примера вы можете добавить следующееметод для вашего DatabaseHelper: -

public String getName(long id) {

    String rv = "not found";
    SqliteDatabase db = this.getWritableDatabase();
    String whereclause = "ID=?";
    String[] whereargs = new String[]{String.valueOf(id)};
    Cursor csr = db.query(TABLE_NAME,null,whereclause,whereargs,null,null,null);
    if (csr.moveToFirst()) {
        rv = csr.getString(csr.getColumnIndex(COL2));
    }
    return rv;
}

Вышеуказанное может быть использовано String name = mDatabaseHelper.getName(1);.

  • Обратите внимание, что предполагается, что существует строка с идентификатором 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...