gpt4 book ai didi

android - 应用程序启动时以编程方式调用 rawQuery

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

我们有这两个类 MainActivity 和一个 DBHelper

DBHelper创建数据库和两个表一个表,masterPW ,只有一行两列,IDColPW .一旦创建并插入数据,该表将仅包含一条记录。

专栏ColPW应用程序启动时将为空或 null第一次。

我们想调用rawQuery在应用程序启动时以编程方式设置 ColPW 的值列到 String .

如果字符串变量为 null 或为空 MainActivity显示两个 EditText字段和保存按钮。如果字符串变量获得来自 ColPW 的数据柱子。 MainActivity 只会显示一个EditText 字段和 ENTER 按钮。

作为 Android 的真正新手,我在这里不知所措如何制作应用程序以编程方式调用 rawQuery .我在哪里放置 rawQuery

如果查询结果在DBHelper中类,如何发送结果为 MainActivity ? Intent ,全局单例类,或使用带有 getter 和 setter 的模型类以及适配器类?

我是用 DerbyDB 和 JavaFX 写的,但是我可以打开并创建表查询所有在同一个类中的表

    import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

Button btnSave;
Button btnEnter;
TextView tvPW;
TextView tvCPW;
EditText etPW;
EditText etCPW;
int x = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
tvPW = (TextView) findViewById( R.id.tvPW );
tvCPW = (TextView) findViewById( R.id.tvCPW );
etPW = (EditText) findViewById( R.id.etPW );
etCPW = (EditText) findViewById( R.id.etCPW );

btnEnter = (Button) findViewById( R.id.btnEnter );
btnSave = (Button) findViewById( R.id.btnSave );
addListenerOnButtonSave();

DBHelper dbHelper = new DBHelper( this );
String str = dbHelper.getCol_PW();
if (str == null || str.isEmpty()) {
System.out.println( "I am null" );
} else {
System.out.println( "I am NOT NULL" );
}
}

private void addListenerOnButtonSave() {
btnSave.setOnClickListener( new View.OnClickListener() {

@Override
public void onClick(View v) {

if (x == 1) {
btnSave.setVisibility( View.INVISIBLE );
btnEnter.setVisibility( View.VISIBLE );
tvCPW.setVisibility( View.INVISIBLE );
etCPW.setVisibility( View.INVISIBLE );
etPW.requestFocus();
setTitle( "Enter Password" );

}

}
} );
}
}
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

public static final String DB_NAME = "PassWord";
public static final Integer DB_VERSION = 1;

public static final String TABLE_NAME = "masterPW";
public static final String Col_ID = "ID";
public static final String Col_MPW = "mpw";

private static final String MAKE_TABLE = "CREATE TABLE " + TABLE_NAME +
"(" + Col_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + Col_MPW + " TEXT" + ")";

SQLiteDatabase db;


public DBHelper(Context context){
super(context,DB_NAME,null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL( MAKE_TABLE );
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL(MAKE_TABLE);
}

public String getCol_PW(){
String str = null;
String q = "SELECT mpw FROM masterPW";
Cursor cursor = db.rawQuery(q,null);
if(cursor.moveToFirst()){
str = cursor.getString(cursor.getColumnIndex(Col_MPW));
}
return str;
}
}

最佳答案

在您的 MainActivity onCreate 中尝试这样做:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

DBHelper dbHelper = new DBHelper(this);
String str = dbHelper.getColPW();
if(str == null || str.isEmpty()){
//display 2 edittext
} else {
//display 1 edittext
}

}

在 DBHelper.java 中:

private SQLiteDatabase myDataBase;
public String getColPW(){
String str = null;
myDataBase = getWritableDatabase();
Cursor cursor = myDataBase.rawQuery("select " + COL_MPW + " from " + TABLE_NAME, null);
if(cursor.moveToFirst()){
str = cursor.getString(cursor.getColumnIndex(COL_MPW));
}
return str;
}

如有疑问,请在评论中提问。

关于android - 应用程序启动时以编程方式调用 rawQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859179/

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