我在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正常工作,为什么我无法从表中看到我的数据?
答案 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
}
希望有所帮助,请参阅