当前位置: 首页 > 知识库问答 >
问题:

e/sqlitelog:(1)表Estudiantes在android中没有名为calificacion的列

颛孙沈义
2023-03-14

这是我正在使用的类

public class DBHelper extends SQLiteOpenHelper {

    private static final String DB_FILE = "Database.db";
    private static final String TABLE = "Estudiantes";
    private static final String FIELD_ID = "id";
    private static final String FIELD_NAME = "nombre";
    private static final String FIELD_GRADE = "calificacion";

    public DBHelper(Context context){
        super(context, DB_FILE, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = "CREATE TABLE " + TABLE + "(" +
                FIELD_ID + " INTEGER PRIMARY KEY, " +
                FIELD_NAME + " TEXT, " +
                FIELD_GRADE + " INTEGER);";
        db.execSQL(query);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String query = "DROP TABLE IF EXISTS ?";
        String[] params = {TABLE};
        db.execSQL(query, params);
    }

    public void save(String nombre, int calificacion){
        SQLiteDatabase db = getWritableDatabase();
        ContentValues valores = new ContentValues();

        valores.put(FIELD_NAME, nombre);
        valores.put(FIELD_GRADE, calificacion);

        db.insert(TABLE, null, valores);
    }

    public int delete(String nombre){
        SQLiteDatabase db = getWritableDatabase();
        String clause = FIELD_NAME + " = ?";
        String[] args = {nombre};
        return db.delete(TABLE, clause, args);
    }

    public int find(String nombre){
        SQLiteDatabase db = getReadableDatabase();
        String filtrito = FIELD_NAME + " = ?";
        String[] args = {nombre};

        Cursor c = db.query(TABLE, null, filtrito, args, null, null, null);
        int result = -1;

        if(c.moveToFirst()) {
            result = c.getInt(2);
        }

        return result;
    }
}

这是我得到的错误消息:

E/SQLiteLog: (1) table Estudiantes has no column named calificacion
E/SQLiteDatabase: Error inserting calificacion=80 nombre=Fer
android.database.sqlite.SQLiteException: 
table Estudiantes has no column named calificacion (code 1): , while compiling: 
INSERT INTO Estudiantes(calificacion,nombre) VALUES (?,?)

共有1个答案

鲜于浩淼
2023-03-14

看起来您稍后在数据库中添加了calificacion列。我将执行以下操作之一:

  1. 卸载并重新安装应用程序
  2. 最好的方法是在onupdate方法中droprecreateEstudiantes表,并在更改架构时增加db版本。
 类似资料:
  • 问题内容: 当我尝试在数据库中放置新条目时,出现错误和下面显示的错误。我已经搜索了好几个小时,但无法检测到出了什么问题。任何输入都是极好的! 这是 LogCat 的 错误 。 我的 数据库文件 。 然后是我的 AddNewDay文件 。 这就是我在数据库中添加新条目的方式。 问题答案: 所以基本上我找到了解决方案。我仍然对它的愚蠢感到困惑。显然,数据库工作是我的超敏感材料!我的问题是我忘记了最后一

  • 我知道有一些关于这个的话题,我试着去了解所有的答案,但是这对我的情况没有帮助。我一直收到错误,认为列SecondPhone不存在

  • 无法在SQlite中创建列E/SQLiteLog:(1)表类没有名为idClass的列E/SQLiteDatabase:插入nameClass=122 idClass=122 Android.Database.SQlite.SQLiteException:表类没有名为idClass的列(代码1 SQLITE_ERROR):,编译时:插入类(nameClass,idClass)值(?,?)

  • 一个简单的问题:有效吗? 换句话说:赋值是一种定义良好的行为,而枚举常量的值集中不存在这种行为吗? 演示:

  • 案例2: 但是在第二种情况下,即使arraylist中没有项,它的大小也将得到mySignimgList2.size()=1。

  • 问题内容: 我想从数据库中的表中获取列名列表。使用编译指示,我会得到一个元组列表,其中包含很多不需要的信息。有没有办法只获取列名?所以我最终可能会遇到这样的事情: [Column1,Column2,Column3,Column4] 之所以绝对需要此列表,是因为我想在列表中搜索列名并获取索引,因为很多代码中都使用了索引。 有没有办法得到这样的清单? 谢谢 问题答案: 您可以使用sqlite3和pep