Я нашел следующую ветку Проверьте, пуста ли база данных .Но данное решение, похоже, не работает для меня.Может кто-нибудь дать мне подсказку, как действовать?Я новичок в SQlite и Android студии.Спасибо
Это то, что я пытаюсь сделать.
public class MainActivity extends AppCompatActivity {
public static boolean firstOrNot = false;
static User user;
MyDBHandler myDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
myDb = new MyDBHandler(this);
Я инициализирую свою переменную базы данных.
myProgressBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(myDb.isNotEmpty() != true)
Ниже здесь, где возникает проблема.Когда я вызываю этот метод, кажется, что моя программа полностью зависает.Я хочу, чтобы он возвращал логическое значение, чтобы увидеть, пуста ли база данных или нет.Так выглядит метод
public boolean isNotEmpty(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor mCursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
Boolean rowExists;
if (mCursor.moveToFirst())
{
// DO SOMETHING WITH CURSOR
rowExists = true;
} else
{
// I AM EMPTY
rowExists = false;
}
return rowExists;
}
Так выглядит остальная часть класса MyDBHandler.
package com.example.marko.lektion2;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;
import android.content.ContentValues;
import android.database.Cursor;
import android.util.Log;
public class MyDBHandler extends SQLiteOpenHelper{
private static final String TAG = "DatabaseHelper";
public static final String TABLE_NAME ="REGISTRATION";
public static final String COLUMN_ID = "ID";
public static final String COLUMN_WEIGHT = "WEIGHT";
public static final String COLUMN_AGE = "AGE";
private static final String[] COLUMNS = { COLUMN_ID, COLUMN_WEIGHT, COLUMN_AGE};
public MyDBHandler(Context context ) {
super(context, TABLE_NAME, null , 1);
// SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE USER (" + "id INTEGER PRIMARY KEY AUTOINCREMENT ," +
"weight INTEGER ," + " age INTEGER) ";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public User getUser(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, // a. table
COLUMNS, // b. column names
" id = ?", // c. selections
new String[] { String.valueOf(id) }, // d. selections args
null, // e. group by
null, // f. having
null, // g. order by
null); // h. limit
if (cursor != null)
cursor.moveToFirst();
User user = new User();
user.setId(Integer.parseInt(cursor.getString(0)));
user.setWeight (Integer.parseInt(cursor.getString(1)));
user.setAge(Integer.parseInt(cursor.getString(2)));
return user;
}
public void addUser(User player) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_WEIGHT, player.getWeight());
values.put(COLUMN_AGE, player.getAge());
// insert
db.insert(TABLE_NAME,null, values);
db.close();
}