我创建使用SQLite一个登录页面,但它不能正常工作。每当我跑我的项目不显示任何错误,并成功安装APK,但查询部分两者均显示查询错误,我无法找到任何类型的错误在我的查询。我张贴DB辅助类。请人指导我,这样我可以能够找到错误并解决它。
package com.example.u.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.example.u.entities.Accounts;
public class AccountsDB extends SQLiteOpenHelper {
private static String dbName= "accountDB";
private static String tableName= "account";
private static String idColumn= "id";
private static String usernameColumn= "username";
private static String passwordColumn= "password";
private static String fullameColumn= "fullname";
private static String emailColumn= "email";
public AccountsDB(Context context){
super(context, dbName, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + tableName + "(" +
idColumn + "integer primary key autoincrement," +
usernameColumn + "text, " +
passwordColumn + "text, " +
fullameColumn + "text," +
emailColumn + "text" +
")" );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}
public boolean create(Accounts accounts){
boolean result= true;
try {
SQLiteDatabase sqLiteDatabase = getWritableDatabase();
ContentValues contentValues= new ContentValues();
contentValues.put(usernameColumn, accounts.getUsername());
contentValues.put(passwordColumn, accounts.getPassword());
contentValues.put(fullameColumn, accounts.getFullname());
contentValues.put(emailColumn, accounts.getEmail());
result= sqLiteDatabase.insert(tableName, null, contentValues) > 0;
}catch (Exception e){
result= false;
}
return result;
}
public static Accounts login(String username, String password){
Accounts accounts= null;
try {
SQLiteDatabase sqLiteDatabase= getReadableDatabase();
Cursor cursor= sqLiteDatabase.rawQuery("select * from" + tableName +
"where username= ? and password = ?", new String[] {username, password});
if (cursor.moveToFirst()){
accounts= new Accounts();
accounts.setId(cursor.getInt(0));
accounts.setUsername(cursor.getString(1));
accounts.setPassword(cursor.getString(2));
accounts.setFullname(cursor.getString(3));
accounts.setEmail(cursor.getString(4));
}
}catch (Exception e){
accounts = null;
}
return accounts;
}
public Accounts checkUsername (String username){
Accounts accounts= null;
try {
SQLiteDatabase sqLiteDatabase= getReadableDatabase();
Cursor cursor= sqLiteDatabase.rawQuery("select * from" + tableName +
"where username= ?", new String[] {username});
if (cursor.moveToFirst()){
accounts= new Accounts();
accounts.setId(cursor.getInt(0));
accounts.setUsername(cursor.getString(1));
accounts.setPassword(cursor.getString(2));
accounts.setFullname(cursor.getString(3));
accounts.setEmail(cursor.getString(4));
}
}catch (Exception e){
accounts = null;
}
return accounts;
}
}
请帮我在我的代码中找到错误,所以我能完成我的项目
你已经标识符(表和列名)后省略空间尝试以下方法: -
db.execSQL("create table " + tableName + "(" +
idColumn + " integer primary key," +
usernameColumn + " text, " +
passwordColumn + " text, " +
fullameColumn + " text," +
emailColumn + " text" +
")" );
AUTOINCREMENT关键字强加额外的CPU,内存,磁盘空间和磁盘I / O开销,如果不严格需要应该避免。它通常是没有必要的。
你将不得不删除该应用程序的数据或卸载应用程序,进行更改后。