繁体   English   中英

Android SQLite 数据获取

[英]Android SQLite data fetching

每次我从我的 SQLite 运行“select *”查询时,应用程序都会停止。 我推断它每次都调用数据库助手,但我不知道如何修复它。

主活动.java

public class MainActivity extends AppCompatActivity {
    DatabaseHelper databaseHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().setStatusBarColor(Color.WHITE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        displayUsers();
    }

    public void displayUsers() {
        Cursor cursor = databaseHelper.getAllUsers(); //here's where the error keeps on happening
        if(cursor.getCount() == 0) {
            Toast.makeText(this, "none", Toast.LENGTH_SHORT).show();
        }
    }
}

数据库助手

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "reminders.db";
    public static final String T_1 = "tbl_users";
    public static final String T1_COL_1 = "ID";
    public static final String T1_COL_2 = "FIRST_NAME";
    public static final String T1_COL_3 = "MIDDLE_INITIAL";
    public static final String T1_COL_4 = "LAST_NAME";
    public static final String T1_COL_5 = "PHONE";
    public static final String T1_COL_6 = "EMAIL";
    public static final String T1_COL_7 = "USERNAME";
    public static final String T1_COL_8 = "PASSWORD";

    public DatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, 1);
        SQLiteDatabase database = this.getWritableDatabase();
    }
    ...//other functions

    public Cursor getAllUsers() {
        SQLiteDatabase database = this.getWritableDatabase();
        Cursor cursor = database.rawQuery("select * from " + T_1, null);
        return cursor;
    }
}

在返回游标之前关闭您的数据库

public Cursor getAllUsers() {
   SQLiteDatabase database = this.getWritableDatabase();
   Cursor cursor = database.rawQuery("select * from " + T_1, null);

   database.close(); // Added

   return cursor;
}

您的 DatabaseHelper 类不会创建任何对象,因为您没有调用 new DatabaseHelper (this)。 这就是 databasehelper 返回 null 的原因。 您可以在 onCreate 方法中尝试这些行,databaseHelper= new DatabaseHelper(this);

在下面的函数中,首先你必须初始化数据库以获得 DatabaseHelper 类中的 WritableDatabase。

public void displayUsers() {
databaseHelper = DatabaseHelper(MainActivity.this)
        Cursor cursor = databaseHelper.getAllUsers();
        if(cursor.getCount() == 0) {
            Toast.makeText(this, "none", Toast.LENGTH_SHORT).show();
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM