gpt4 book ai didi

android - 为什么 Logcat 显示 "E/SQLiteLog﹕ (1) no such table: reg_info"?

转载 作者:行者123 更新时间:2023-11-29 22:11:12 25 4
gpt4 key购买 nike

我更改了数据库版本,在创建表的 SQL 函数中添加了适当数量的空格,并更新了将输入插入数据库的函数的参数,但 LogCat 仍然显示:

E/SQLiteLog: (1) no such table: reg_info
E/SQLiteDatabase: Error inserting user_password=e user_email=e user_name=e
While compiling: INSERT INTO reg_info(user_password,user_email,user_name)

我浓缩了错误中显示的信息,只是为了重点关注这些特定错误。此问题发生在模拟器和Android设备上。谢谢。

这是我的契约(Contract)类,我在其中声明了表的所有列:

package com.example.xxx.datadigger;
import android.provider.BaseColumns;

public final class TableData
{
public TableData()
{

}
public static abstract class TableInfo implements BaseColumns
{
public static final String DATABASE_NAME="user_info";
public static final String TABLE_NAME="reg_info";
public static final String KEY_ID = "id";
public static final String USER_NAME = "user_name";
public static final String USER_PASSWORD = "user_password";
public static final String USER_CON = "user_con";
public static final String USER_EMAIL = "user_email";
}
}

这是我尝试创建表并插入数据的位置:

package com.example.xxx.datadigger;

import android.app.ActionBar;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.TabWidget;


public class DatabaseOperations extends SQLiteOpenHelper{
public static final int database_version = 2;
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ", ";
private static final String CREATE_QUERY = "CREATE TABLE "
+ TableData.TableInfo.TABLE_NAME + " ("
+ TableData.TableInfo.KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ TableData.TableInfo.USER_EMAIL + TEXT_TYPE + COMMA_SEP
+ TableData.TableInfo.USER_NAME + TEXT_TYPE + COMMA_SEP
+ TableData.TableInfo.USER_PASSWORD + TEXT_TYPE + COMMA_SEP
+ "); ";

public DatabaseOperations(Context context) {
super(context, TableData.TableInfo.DATABASE_NAME, null, database_version);
Log.d("Database Operations", "Database created");
}

@Override
public void onCreate(SQLiteDatabase sdb) {

sdb.execSQL(CREATE_QUERY);
Log.d("database Operations","Table created");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
public void putInformation(DatabaseOperations dop, String name,String password,String email)
{
SQLiteDatabase SQ = dop.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(TableData.TableInfo.USER_EMAIL, email);
cv.put(TableData.TableInfo.USER_NAME,name);
cv.put(TableData.TableInfo.USER_PASSWORD, password);
//cv.put(TableData.TableInfo.USER_CON,con_password);
SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv);
Log.d("database Operations","One raw inserted");
}
}

最佳答案

您的onUpgrade() (版本号增加后)方法为空,因此如果您的表不是在onCreate()期间创建的(第一次创建数据库)它将永远不会被创建,并且会抛出相同的错误。正如你所说,你创造了空间,然后增加了版本,然后尝试永远不会成功。

尝试卸载该应用程序并在现有代码中重新安装。

关于android - 为什么 Logcat 显示 "E/SQLiteLog﹕ (1) no such table: reg_info"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31651993/

25 4 0