2013-05-10 74 views
0

我在一個類中有錯誤,我不知道爲什麼。錯誤是:SQLiteOpenhelper錯誤

的方法openOrCreateDatabase(字符串,整數,空)是未定義的類型Bdoh

代碼:

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);

但該錯誤未被刪除。

我該如何解決?

謝謝。

+0

檢查文檔的onCreate方法http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html。向下滾動以檢查openOrCreateDatabase(params)。檢查應該是什麼參數 – Raghunandan 2013-05-10 17:37:46

回答

1

在你的構造函數中初始化你的對象。

SQLiteDatabase db; 

在構造函數中:

db=context.openOrCreateDatabase("lugares",Context.MODE_PRIVATE,null); 
+0

感謝您的答案。它現在有效。 – axmug 2013-05-10 17:50:50

0

當你調用getReadableDatabase()或​​數據庫會自動創建

你可以重寫你的構造,因此只需要在Context作爲參數,則這樣:

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

當你想寫或從數據庫讀取,你可以創建一個Bdoh(lol)對象,並要求可讀或可寫的數據庫。第一次調用這些方法的系統,一個爲你創建數據庫,並呼籲從Bdoh

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); 
     } 

    }