gpt4 book ai didi

java - 使用cursor.getString() 使我的应用程序崩溃

转载 作者:行者123 更新时间:2023-12-01 11:03:07 24 4
gpt4 key购买 nike

我一直在尝试制作一个登录应用程序。这是LoginActivity:

public class LoginActivity extends AppCompatActivity {

EditText UsernameLogin, PasswordLogin;
UserDbHelper userDbHelper;
SQLiteDatabase sqLiteDatabase;
public static Cursor cursor;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_login_activity);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

}

public void loginUser(View view) {

UsernameLogin = (EditText) findViewById(R.id.insert_username);
PasswordLogin = (EditText) findViewById(R.id.insert_password);
String Username = UsernameLogin.getText().toString();
String Password = PasswordLogin.getText().toString();

userDbHelper = new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
cursor = userDbHelper.getUsername(Username, sqLiteDatabase);

if(cursor.getCount() != 0) {
if(cursor.getString(3).equals(Password)) {
Intent intent = new Intent(this, WelcomeActivity.class);
startActivity(intent);
Toast.makeText(this, "Login successful!", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "Wrong Password", Toast.LENGTH_SHORT).show();
PasswordLogin.setText("");
}
} else {
Toast.makeText(this, "Username does not exist", Toast.LENGTH_SHORT).show();
UsernameLogin.setText("");
PasswordLogin.setText("");
}

}

}

这是 UserDbHelper 中的 getUsername 方法:

public Cursor getUsername (String username, SQLiteDatabase db) {

String[] projections = {UserContract.NewUserInfo.FIRST_NAME, UserContract.NewUserInfo.LAST_NAME,
UserContract.NewUserInfo.USER_PASSWORD, UserContract.NewUserInfo.USER_EMAIL};
String selection = UserContract.NewUserInfo.USER_NAME + " LIKE ?";
String[] selection_args = {username};

Cursor cursor = db.query(UserContract.NewUserInfo.TABLE_NAME, projections, selection, selection_args, null, null, null);

return cursor;
}

这会使我的应用程序崩溃。如果我将 cursor.getString(3) 替换为字符串,应用程序将正常运行。

最佳答案

不要使用魔数(Magic Number)。游标具有方法 getColumnIndex 例如

cursor.getString(cursor.getColumnIndex(UserContract.NewUserInfo.USER_PASSWORD));

并且不要忘记在查询之前调用cursor.moveToFirst()

关于java - 使用cursor.getString() 使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33186962/

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