【问题标题】:ANDROID sqlite no such tableANDROID sqlite 没有这样的表
【发布时间】:2013-10-03 14:17:34
【问题描述】:

我一直在尝试在我的 android 项目中使用 sqlite 创建一个数据库,但不明白为什么我会收到这个消息错误“没有这样的表”:S 我认为我正在创建一个好的数据库。有什么帮助吗?

这是我的代码 handler_sqlite 类:

public class Handler_sqlite extends SQLiteOpenHelper {

    public Handler_sqlite(Context ctx)
    {
        super ( ctx, "MiBase", null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db ) 
    {
        String query =  " CREATE TABLE IF NOT EXISTS usuarios ( user VARCHAR PRIMARY KEY, password VARCHAR );" ;
        db.execSQL(query);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int version_ant, int version_post)
    {
        db.execSQL("DROP TABLE IF EXISTS usuarios");
        onCreate(db);
    }

    public void insertarReg(String user, String password)
    {
        ContentValues valores = new ContentValues();
        valores.put("user", user);
        valores.put("password", password);
        this.getWritableDatabase().insert("usuarios",null,valores);

    }

    public void abrir()
    {
        this.getWritableDatabase();
    }

    public void cerrar()
    {
        this.close();
    }

    public String leer_user ()
    {
        String columnas[]={"user","password"};
        Cursor c = this.getReadableDatabase().query("usuarios",columnas,null,null,null,null,null);
        int iu;
        iu = c.getColumnIndex("user");

        c.moveToLast();
        return c.getString(iu);
    }

    public String leer_password ()
    {
        String columnas[]={"user","password"};
        Cursor c = this.getReadableDatabase().query("usuarios",columnas,null,null,null,null,null);
        int ip;
        ip = c.getColumnIndex("password");

        c.moveToLast();
        return c.getString(ip);
    }

}

以及我引用 bd 的主要代码:

Handler_sqlite helper = new Handler_sqlite(this);
 helper.abrir();
helper.insertarReg(username,passw);
String username2 = helper.leer_user();
String password2 = helper.leer_password();

当前错误:

error inserting password = x user = y android.database.sqlite.SQLiteException: no such table: usuarios, while compile: INSERT INTO usuarios (password,user) Values (?,?);

提前致谢。

【问题讨论】:

  • 如果在onCreate()中对表做任何改动,需要增加数据库版本
  • 你能发布堆栈跟踪吗?另外,尝试从建表 SQL 语句中删除IF NOT EXISTS
  • 什么意思?我只有在不存在时才创建表吗?
  • emmanuel,我是编程/android 世界的新手,stacktrace 是什么?
  • 这是您看到错误的地方。在此处复制并粘贴它(这里我的意思是在您的问题中通过编辑它)。

标签: android sqlite


【解决方案1】:

当您将数据库的名称传递给构造函数时,它应该包含 .db 扩展名(即 MiBase.db)。

【讨论】:

    【解决方案2】:

    您确定 create table 语句正确吗? (即 exec 不会抛出任何异常/错误/等)。

    数据库真的存在吗?如果您 adb shell 并作为您的应用程序运行,请查看 db 目录(名称可能会因版本而异)并查看是否有 usaios.sqlite 文件。

    您确定所有代码中的表名都没有拼写错误吗? (即使用常量而不是重新输入)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2012-10-16
      • 2013-03-07
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      相关资源
      最近更新 更多