private static final String TABLE_USERS = "Registerd_Accounts";
当我把它改成这个时 私有(private)静态最终字符串TABLE_USERS =“Registered_Accounts”;
当我按下按钮或任何使用数据库的东西时,它崩溃了。当我将其改回拼写错误时,它就可以工作。但是“Registerd_Accounts”仅在处理程序中使用,所以怎么了? 在此输入代码。
package com.set.ultimax.login;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "All_Accounts";
private static final String TABLE_USERS = "Registered_Accounts";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_USERS = "userName";
private static final String KEY_PASS = "passWord";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_ACCOUNT_TABLE = "CREATE TABLE " + TABLE_USERS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_USERS + " TEXT,"
+ KEY_PASS + " TEXT" + ")";
db.execSQL(CREATE_ACCOUNT_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
onCreate(db);// Create tables again
}
// Adding new User
void addUsers(Users users) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_USERS, users.getUser()); // User Name
values.put(KEY_PASS, users.getPassword()); // Password
// Inserting Row
db.insert(TABLE_USERS, null, values);
db.close(); // Closing database connection
}
public void deleteAll() //Deletes all data in the database
{
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_USERS,null,null);
}
public boolean validateUser(String username, String password){
Cursor c = getReadableDatabase().rawQuery(
"SELECT * FROM " + TABLE_USERS + " WHERE "
+ KEY_USERS + "='" + username +"'AND "+KEY_PASS+"='"+password+"'" , null);
if (c.getCount() > 0) {
return true;
}
else{return false;}
}
public boolean sameUser(String username){
Cursor c = getReadableDatabase().rawQuery(
"SELECT * FROM " + TABLE_USERS + " WHERE "
+ KEY_USERS + "='" + username + "'" , null);
if (c.getCount() > 0) {
return true;
}
else{return false;}
}
}
这是我的访问器方法
package com.set.ultimax.login;
public class Users {
//private variables
int _id; // Just to have it.
String _userName;
String _passWord;
// Empty constructor
public Users(){
}
// constructor
public Users(String userName, String _passWord){
this._userName = userName;
this._passWord = _passWord;
}
// getting User
public String getUser(){
return this._userName;
}
// getting Password
public String getPassword(){
return this._passWord;
}
}
请您参考如下方法:
您应该从设备中卸载该应用程序,然后再次安装并检查它。这可能对您有帮助,因为当我们安装应用程序时,我们的应用程序也会创建本地数据库和数据库表。因此,当您安装时,您的本地数据库已使用拼写错误的表名创建,并且您的应用程序尝试找到正确的拼写表。