繁体   English   中英

Android Studio Sqlite 数据库

[英]Android Studio Sqlite Database

public class DatabaseHelper extends SQLiteOpenHelper{
    public static final String DATABASE_NAME = "Register.db";
    public static final String TABLE_NAME = "particulars_table";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "Email";
    public static final String COL_3 = "Username";
    public static final String COL_4 = "Password";


    public DatabaseHelper(Context context){
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT,PASSWORD TEXT)");
        db.execSQL("CREATE TABLE IF NOT EXISTS (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);");
    }

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

    public boolean insertData(String Email, String Username, String Password){

        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,Email);
        contentValues.put(COL_3,Username);
        contentValues.put(COL_4,Password);
        long result = db.insert(TABLE_NAME,null,contentValues);
        if(result == -1)
            return false;
        else
            return true;
    }

}

我的项目中有此代码,但似乎无法将该表放入我的数据库中。 当我在开发人员文件资源管理器中检查我的数据库时,该数据库已创建。 我的代码有什么问题阻止它创建表格并从我的程序接受我的输入以保存详细信息吗?

试试这个来创建表。

在下面的查询中, EXISTSTable-name之间没有空格,所以它是EXISTSTable名称。

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT,PASSWORD TEXT)");

或在此您还没有添加表名。

db.execSQL("CREATE TABLE IF NOT EXISTS TABLE_NAME (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);");

您注释的 CREATE 语句必须更改为:

"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT, PASSWORD TEXT)"

你在 TABLE_NAME 之前没有空间,所以它产生了这个:
CREATE TABLE IF NOT EXISTSparticulars_table

onCreate() db.execSQL() onCreate()更改为:

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT, PASSWORD TEXT)");

从您测试它的模拟器/设备卸载应用程序,以便删除数据库并再次运行。

db.execSQL("CREATE TABLE IF NOT EXISTS (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);"); }

在此查询中未指定表名。 这可能是未创建表的原因。

只需将db.execSQL更改为

db.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_NAME (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);");

$TABLE_NAME将被您的 SqlHelper 替换为您的String TABLE_NAME = "particulars_table"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM