正在尝试在android NoSuchTable中的sqlite数据库中插入行

正在尝试在android NoSuchTable中的sqlite数据库中插入行,android,android-sqlite,sqliteopenhelper,Android,Android Sqlite,Sqliteopenhelper,我是数据库方面的新手。目前,我已经创建了一个应用程序,我想将它链接到一个SQLite数据库。在youtube上学习了一个教程之后,我通过添加一个简单的行来测试我的数据库。我得到一个错误E/SQLiteLog:(1)没有这样的表:分数E/SQLiteDatabase:error插入DScore=0 LScore=0 Name=Aris 这是我目前的代码: public class DB_Controller { private DB_Scores helper; pu

我是数据库方面的新手。目前,我已经创建了一个应用程序,我想将它链接到一个SQLite数据库。在youtube上学习了一个教程之后,我通过添加一个简单的行来测试我的数据库。我得到一个错误
E/SQLiteLog:(1)没有这样的表:分数
E/SQLiteDatabase:error插入DScore=0 LScore=0 Name=Aris
这是我目前的代码:

     public class DB_Controller  {
    private DB_Scores helper;

    public DB_Controller(Context context) {
        helper = new DB_Scores(context);
    }

    public long insertRow(String name){
        SQLiteDatabase db=helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DB_Scores.NAME, name);
        values.put(DB_Scores.DSCORE, 0);
        values.put(DB_Scores.LSCORE, 0);
        long id = db.insert(DB_Scores.TABLE_NAME,null, values);
        return id;
    }


    static class DB_Scores extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "scores.db";
        private static final String TABLE_NAME = "SCORES";
        private static final int DATABASE_VERSION = 1;
        private static final String UID = "_id";
        private static final String NAME = "Name";
        private static final String LSCORE = "LScore";
        private static final String DSCORE = "DScore";
        private static final String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+UID+" INTEGER PRIMARY KEY " +
                "AUTOINCREMENT, "+NAME+" TEXT UNIQUE, "
                +LSCORE+" INTEGER, "+DSCORE+" INTEGER);";
        private Context context;//?

        public DB_Scores(Context context ) {

            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            this.context = context;
            Toast.makeText(context, "Constructor was called", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            try {
                db.execSQL(CREATE_TABLE);
                Toast.makeText(context, "onCreate was called", Toast.LENGTH_LONG).show();
            } catch (SQLException e) {
                Toast.makeText(context, ""+e, Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            try{
                db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
                Toast.makeText(context, "onUpgrade called", Toast.LENGTH_LONG).show();
                onCreate(db);
            }catch(SQLException e){
                Toast.makeText(context, ""+e, Toast.LENGTH_LONG).show();
            }
        }
    }
}
以及我创建DB_Controller对象的活动
public class Scores\u活动{

private DB_Controller dbController;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scores_activity);      

    dbController = new DB_Controller(this);
    addRow();

}

public void addRow() {
    long id=dbController.insertRow("Aris");
    if (id < 0) {
        Toast.makeText(this, "Unsuccessful", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
    }
}
专用数据库控制器dbController;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.scores\u活动);
dbController=新的DB_控制器(此);
addRow();
}
public void addRow(){
long id=dbController.insertRow(“Aris”);
if(id<0){
Toast.makeText(此为“未成功”,Toast.LENGTH_SHORT).show();
}否则{
Toast.makeText(这是“成功”,Toast.LENGTH_SHORT).show();
}
}
它标记为错误源的行是
long id=dbController.insertRow(“Aris”);

long id=db.insert(db_Scores.TABLE_NAME,null,value);
addRow();

我的猜测是,我在创建数据库时出现了一个逻辑错误。感谢您花时间更改create table命令,如下所示(查询末尾不需要分号)


查询末尾的分号不是必需的
,但如果有分号,则不会产生任何危害。我从未见过的数据库名称如何。db any我认为您应该尝试将datassename更改为私有静态最终字符串database\u name=“scores”;以及从查询中删除分号我一直在看的教程声称两者是同一件事。@adeelturk在
私有静态最终字符串数据库\u NAME=“scores.db”中的
db
后面有分号吗
?还有…很抱歉告诉你,几乎每个数据库都按惯例使用
.db
扩展。不管怎样,这并不重要。如果你愿意的话,你可以不给它任何扩展,也可以给它一个像
.godzilla
这样的幻想扩展。Android不在乎这一点。你可能在第一次应用程序发布后更改了表名execution.use ormlite而不是sqlite当我在测试时,我使用了数据库名,但我想我从未更改过表名。你的意思是,我第一次创建这个数据库时,我有一个不同的表,现在我尝试从头开始做,onCreate方法没有执行?有没有办法检查是这样吗?@rotwang只需卸载并重新安装你的应用程序。享受吧。这真是奇迹。谢谢
 private static final String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+UID+" INTEGER PRIMARY KEY " +
            "AUTOINCREMENT, "+NAME+" TEXT UNIQUE, "
            +LSCORE+" INTEGER, "+DSCORE+" INTEGER )";