0

我在一堂课上有一个错误,我不知道为什么。错误是:

未定义 Bdoh 类型的方法 openOrCreateDatabase(String, int, null)

编码:

public class Bdoh extends SQLiteOpenHelper
{
String bdcons = "CREATE TABLE lugares (_id INTEGER PRIMARY KEY AUTOINCREMENT, 
    nombre TEXT, descripcion TEXT, latitud DOUBLE, longitud DOUBLE, foto TEXT)";
SQLiteOpenHelper sbd;
SQLiteDatabase db=openOrCreateDatabase("lugares",Context.MODE_PRIVATE,null); 
Cursor cr;
String TBD="lugares"; 

public Bdoh(Context context, String name, CursorFactory factory, int version) 
{
    super(context, "lugares", null, 1);
    // TODO Auto-generated constructor stub

}

@Override
public void onCreate(SQLiteDatabase db) 
{
    // TODO Auto-generated method stub
    db.execSQL(bdcons);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{
    // TODO Auto-generated method stub

            db.execSQL("DROP TABLE IF EXISTS lugares");

    //Se crea la nueva versión de la tabla
    db.execSQL(bdcons);
}

public void insertar(SQLiteDatabase db) //abre la base de datos e inserta registros
{

        db=sbd.getWritableDatabase();
}

public void estabd(SQLiteDatabase db, double latitude, double longitude)  
{
    String bdcon = "SELECT latitud, longitud from lugares where latitud=lat 
            AND lng=longitud";
    db.execSQL(bdcon);

}

}

我认为这是一个声明错误的对象的问题。我试图解决它打字

SQLiteDatabase db=this.openOrCreateDatabase("lugares",Context.MODE_PRIVATE,null);

但是错误没有被删除。

我该如何解决?

谢谢。

4

3 回答 3

1

在您的构造函数中初始化您的对象。

SQLiteDatabase db;

在构造函数中:

db=context.openOrCreateDatabase("lugares",Context.MODE_PRIVATE,null); 
于 2013-05-10T17:27:02.613 回答
0

getReadableDatabase()调用或调用时会自动创建数据库getWritableDatabase

您可以重写您的构造函数,因此它只需要Context作为参数,如下所示:

public Bdoh(Context context) {
    super(context, "lugares", null, 1);
}

当你想从数据库中写入或读取时,你可以创建一个Bdoh(lol)对象并请求一个可读或可写的数据库。第一次调用其中一个方法时,系统会为您创建数据库并onCreateBdoh

于 2013-05-10T17:31:56.420 回答
0

像这样使用

私有静态类 DatabaseHelper 扩展 SQLiteOpenHelper {

        private static final String TAG = "DatabaseHelper";

        // ---this method will creates database implicitly---
        DatabaseHelper(Context context) {
            super(context, dnname.DATABASE_NAME, null, 1);
            Log.v(TAG + ".DatabaseHelper:", "DatabaseHelper constructor called");
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.v(TAG + ".onCreate:", "Empty Database created");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.v(TAG + ".onUpgrade:", "onUpgrade called");

            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }

    }
于 2013-05-10T17:31:56.850 回答