2010-11-22 8 views
4

Bu "Bence" bunu yapan basit bir kod satırı bulmak ne kadar zor. Her neyse, sorun, "Hizmetlere yeniyim" etkinlikleri ve hizmetleri olan bir programım var.
BenAndroid'deki Hizmetler'den SQLite nasıl kullanılır?

TheDB sınıfı kullanarak faaliyetlerinden benim SQLite veritabanı erişebilirsiniz:

public TheDB(Context context) { 
    this.context = context; 
    OpenHelper openHelper = new OpenHelper(this.context); 
    this.db = openHelper.getWritableDatabase(); 
} 

sonra sadece yöntemleri, örneğin çağırabilir

myActivity sınıfı:

private TheDB db; 
bla... bla... bla... 
this.db = new TheDB(this); 
db.insertSomething(id, name); 

TheDB sınıf (myActivity çağrılan yöntemi):

public void insertSomething(String id, String name){ 
    db.execSQL("INSERT into " + farmsTable 
+ " (id, name)" 
+ " Values " 
+ " (" + id + ", '" + name + "')"); 
} 

Ben myActivity gelen yaptığın gibi benim hizmetinden TheDB en yöntemleri çağırmak yapmanız mümkün istiyorum TÜM .

Yeni bir kurucu mu yapıyorum? Anladığım şekilde değiştirir miyim?

+2

Denediniz mi? – Thomas

+0

Merhaba brotha, şunu denedi: "TheDB (Context) yöntemi myService türü için tanımlanmamış" mY servis kodu: public class myService Service { public TheDB db; \t Bağlam içeriği; \t @Override public void onCreate() { \t context = getApplicationContext(); \t this.db = TheDB (context); } – ZiGi

cevap

5

Sadece aktiviteniz için yaptığınız gibi yapın. TheDB'u başlatmanız için gereken tek şey bir bağlamdır; Activity, Context'un yanı sıra Service'dur.

+0

brotha merhaba, ben çalıştım o burada – ZiGi

+2

"yöntemi TheDB (Bağlam) tipi MyService için tanımsız" kodum söyleyerek tutar ancak: public class MyService Servisi { \t kamu TheDB db uzanır; \t Bağlam içeriği; \t @Override public void onCreate() { \t context = getApplicationContext(); \t this.db = TheDB (context); } – ZiGi

+0

'new' anahtar sözcüğünü kaçırıyorsunuz. – Cristian