gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:24:50 24 4
gpt4 key购买 nike

我是新手,正在研究 Android 应用程序。
我想要实现的是,在 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 的类,然后定义静态方法以从任何 Activity 或 fragment 调用它们。

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

}

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

DBHelper db = new DBHelper(context);

DBHelper db = new DBHelper(getActivity());

然后

db.getUser("specific_username")

关于android - 如何从 Mainactivity 类中的每个函数检索 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com