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



我是一个新手,正在研究安卓应用程序。
我想要实现的是,在Layout 1中,单击按钮时会出现一个Dialog,并从SQLite数据库中检索所需的数据(名称,地址,否等(,并显示检索到的数据。
所以我的问题是我是否必须再次创建一个 SQLite Cursor 数据库,或者我可以使用以下代码以更简单的方式实现这一点?

这是我的代码

@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;
}
}

然后,在您的活动或片段中,您可以初始化数据库并调用该方法。

DBHelper db = new DBHelper(context);

DBHelper db = new DBHelper(getActivity());

然后

db.getUser("specific_username")

最新更新