Android 如何从Mainactivity类中的每个函数检索sqlite数据库

Android 如何从Mainactivity类中的每个函数检索sqlite数据库,android,sqlite,Android,Sqlite,我是一个新手,正在学习android应用程序我想要实现的是,在布局1中,单击按钮会出现一个对话框,从SQLite数据库检索所需数据(名称、地址、编号等),并显示检索到的数据所以我的问题是我是否必须再次创建SQLite游标数据库,或者我可以使用以下代码以更简单的方式实现这一点? 这是我的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我是一个新手,正在学习android应用程序
我想要实现的是,在
布局1
中,单击按钮会出现一个
对话框
,从SQLite数据库检索所需数据(名称、地址、编号等),并显示检索到的数据
所以我的问题是我是否必须再次创建SQLite游标数据库,或者我可以使用以下代码以更简单的方式实现这一点?

这是我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_setting_user);
    setTitle("Setting User");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    sqLiteDataBase = new SQLiteDataBase(this);
    Cursor cursor = sqLiteDataBase.get_user();
    cursor.moveToFirst();
    String name = cursor.getString(cursor.getColumnIndex(nm_us));
    String addres = cursor.getString(cursor.getColumnIndex(add_us));
    String telp = cursor.getString(cursor.getColumnIndex(tlp_us));
    String answer = cursor.getString(cursor.getColumnIndex(ans_us));
    String question = cursor.getString(cursor.getColumnIndex(que_us));

    name_user = (EditText)findViewById(R.id.nameUser);
    addres_user = (EditText)findViewById(R.id.addresUser);
    telp_user = (EditText)findViewById(R.id.telpUser);
    answer_user = (EditText)findViewById(R.id.answerUser);
    question_user = (EditText)findViewById(R.id.questionUser);
    btnUpdate = (Button)findViewById(R.id.btnUpdate);

    name_user.setText(name);
    addres_user.setText(addres);
    telp_user.setText(telp);
    answer_user.setText(answer);
    question_user.setText(question);

    btnUpdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ShowConfirm();
        }
    });
}


private void ShowConfirm() {
    //I call the database again, is there an easier way
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_setting_user);
    setTitle("Update User");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    sqLiteDataBase = new SQLiteDataBase(this);
    Cursor cursor = sqLiteDataBase.get_user();
    cursor.moveToFirst();
    String answer = cursor.getString(cursor.getColumnIndex(ans_us));
    String question = cursor.getString(cursor.getColumnIndex(que_us));

    LayoutInflater layoutInflater = LayoutInflater.from(SettingUser.this);
    View promptView = layoutInflater.inflate(R.layout.dialog_security_user, null);
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(SettingUser.this);
    alertDialogBuilder.setTitle("Question Security");
    alertDialogBuilder.setMessage(question);
    alertDialogBuilder.setView(promptView);

    final EditText question_text = (EditText) promptView.findViewById(R.id.jawabanSecurity);

    alertDialogBuilder.setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    if ((question_text.getText().toString().equals(question))) {
                        ShowUpdatepass();
                    }else if ((question_text.getText().toString().equals(""))) {
                        Toast.makeText(SettingUser.this, "No zero", Toast.LENGTH_SHORT).show();
                    }else {
                        Toast.makeText(SettingUser.this, "wrong", Toast.LENGTH_SHORT).show();
                    }
                }
            })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

    AlertDialog alert = alertDialogBuilder.create();
    alert.show();
}   

任何帮助都将不胜感激。谢谢

首先创建一个扩展SQLiteOpenHelper的类,然后定义静态方法从任何活动或片段调用它们

public class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context) {
    super(context, "database.db", null, 1);
}


@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL(User_columns_name.CREATE_TABLE_QUERY);

  }

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

  }

   public static abstract class User_columns_name implements BaseColumns {
    public static final String TABLE_NAME = "users";
    public static final String COLUMN_NAME_EMAIL = "email";
    public static final String COLUMN_NAME_phone = "phone";
    public static final String COLUMN_NAME_PASSWORD = "password";
    public static final String COLUMN_NAME_FIRST_NAME = "first_name";
    public static final String COLUMN_NAME_LAST_NAME = "last_name";
    public static final String COLUMN_NAME_USER_NAME = "user_name";
    public static final String COLUMN_NAME_ACTIVE = "active";
    public static final String COLUMN_NAME_GENDER = "gender";
    public static final String COLUMN_NAME_PROFILE_IMAGE = "profile_image";
    public static final String COLUMN_NAME_PROVINCE = "province";
    public static final String COLUMN_NAME_CITY = "city";
    public static final String COLUMN_NAME_ABOUT_ME = "about_me";
    public static final String COLUMN_NAME_INSTITUTE = "institute";
    public static final String COLUMN_NAME_MOBILE = "mobile";
    public static final String COLUMN_NAME_BIRTHDAY = "birthday";
    public static final String COLUMN_NAME_USER_TYPE = "user_category";


    public static final String CREATE_TABLE_QUERY = "CREATE TABLE IF NOT EXISTS " + User_columns_name.TABLE_NAME + " ( " +
            "id integer primary key, " +
            User_columns_name.COLUMN_NAME_EMAIL + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_phone + " TEXT NOT NULL," +
            User_columns_name.COLUMN_NAME_PASSWORD + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_FIRST_NAME + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_LAST_NAME + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_USER_NAME + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_PROFILE_IMAGE + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_ACTIVE + " INTEGER NOT NULL, " +
            User_columns_name.COLUMN_NAME_PROVINCE + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_CITY + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_INSTITUTE + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_MOBILE + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_ABOUT_ME + " TEXT NOT NULL, " +
            User_columns_name.COLUMN_NAME_GENDER + " INTEGER NOT NULL, " +
            User_columns_name.COLUMN_NAME_USER_TYPE + " INTEGER NOT NULL, " +
            User_columns_name.COLUMN_NAME_BIRTHDAY + " TEXT NOT NULL" +
            ");";
    public static final String DELETE_TABLE_QUERY = "DROP TABLE IF EXISTS " + User_columns_name.TABLE_NAME;
  }


public User getUser(int user_name) {
    User user = null;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("select * from " + 
    User_columns_name.TABLE_NAME + " where " 
    User_columns_name.COLUMN_NAME_USER_NAME 
    " = " + user_name+ " ", null);
    cursor.moveToFirst();
    if (cursor.getCount() > 0) {
    user = new User();
    user.setUserName(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_USER_NAME)));
        user.setPassword(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_PASSWORD)));
        user.setFirstName(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_FIRST_NAME)));
        user.setLastName(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_LAST_NAME)));
        user.setEmail(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_EMAIL)));
        user.setActive(cursor.getInt(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_ACTIVE)));
        user.setGender(cursor.getInt(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_GENDER)));
        user.setPhone(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_phone)));
        user.setProfileImage(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_PROFILE_IMAGE)));
        user.setAboutMe(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_ABOUT_ME)));
        user.setMobile(cursor.getString(cursor.getColumnIndex(User_columns_name.COLUMN_NAME_MOBILE)));
         //other attributes
      cursor.moveToNext();
      }
    cursor.close();
    return user;
 }

}
然后在Activy或fragment中,您可以初始化数据库并调用该方法

DBHelper db = new DBHelper(context);

然后


也许考虑一下光标是否是问题,还是处理光标所持有的数值的复杂性。从
getUser()
返回的用户对象(如果存在的话)而不是游标是否可以简化问题?
DBHelper db = new DBHelper(getActivity());
db.getUser("specific_username")