已经在数据库中的sqlite表必须通过代码创建

时间:2015-04-13 14:38:10

标签: android sqlite android-studio sqliteopenhelper

我在SqliteBrowser上创建了一个表(结果),第一个代码投诉该表不存在。如果插入以下代码,它可以工作:

 db.execSQL("create table Results (_id integer primary key autoincrement, Question text not null, Rights text not null, Wrongs text not null);");

但是当我使用以下代码检查数据时数据库,数据不存在:

 public void checkTable(String table)  {
          String sqlQuery = "SELECT * FROM " + table + "" ;
    Cursor d = myDataBase.rawQuery(sqlQuery, null);
    while (d.moveToNext()) {
        Log.d("CheckTable Content:", "" + table + ":Fields:" + d.getString(1) + " " + d.getString(2) + " " + d.getString(3));

    }
}

为什么无法识别已经通过sqlitebrowser创建的表的代码,为什么我要再次创建表?如果insertorthrow正常工作,为什么我无法从表中看到我的数据?

1 个答案:

答案 0 :(得分:0)

我不知道您是否编写了创建数据库的函数,但请检查我是如何做到的: 首先创建java以在字符串中创建表

String sqlCreate   = "CREATE TABLE Tutores       (_id INTEGER PRIMARY KEY, nombre_tutor TEXT)";
String sqlCreate2  = "CREATE TABLE Tutorados     (_id INTEGER PRIMARY KEY, nombre_tutorado TEXT, id_tutor REFERENCES Tutores(_id))";

public AgendaSqlite(Context context, String name, CursorFactory factory,int version) {
    super(context, name, factory, version);

}

运行sql语句在同一个java

中创建它
@Override
public void onCreate(SQLiteDatabase db) {
     //Se ejecuta la sentencia SQL de creacion de la tabla
    db.execSQL(sqlCreate);
    db.execSQL(sqlCreate2);
}

@Override
public void onOpen(SQLiteDatabase db) {
    super.onOpen(db);
    if (!db.isReadOnly()) {
        // Enable foreign key constraints
        db.execSQL("PRAGMA foreign_keys=ON;");
    }
}

更新表格

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    //eliminamos la version anterior de la tabla
    db.execSQL("DROP TABLE IF EXISTS Tutores"); 
    db.execSQL("DROP TABLE IF EXISTS Tutorados"); 

    //aqui creamos la nueva version de la tabla
    db.execSQL(sqlCreate);
    db.execSQL(sqlCreate2);

}

然后,在主活动中连接到AgendaSqlite或你叫它的任何东西,并把这段代码:

AgendaSqlite usdbh = new AgendaSqlite(this, ArchivoDB, null, 1);        
        SQLiteDatabase db = usdbh.getWritableDatabase();

接下来,在一个按钮中,您可以检查数据库中是否包含

if(db != null)
                {
                        //do something select, insert, etc

                }

希望有所帮助,请参阅