to moj pomocnik:
public class PomocnikBD extends SQLiteOpenHelper{
public final static int WERSJA_BAZY = 1;
public final static String ID = "_id";
public final static String NAZWA_BAZY = "labBazy";
public final static String NAZWA_TABELI = "telefon";
public final static String KOLUMNA_PRODUCENT = "producent";
public final static String KOLUMNA_MODEL = "model";
public final static String KOLUMNA_WERSJA = "wersja";
public final static String KOLUMNA_WWW = "www";
public final static String TW_BAZY = "CREATE TABLE " + NAZWA_TABELI +
"("+ID+" integer primary key autoincrement, " + KOLUMNA_PRODUCENT+" text not null, "
+ KOLUMNA_MODEL+" text not null, " + KOLUMNA_WERSJA+ " text not null, "
+ KOLUMNA_WWW + " text not null);";
private static final String KAS_BAZY = "DROP TABLE IF EXISTS "+NAZWA_TABELI;
public PomocnikBD(Context context)
{
super(context,NAZWA_BAZY,null,WERSJA_BAZY);
}
// metoda tworzaca baze danych
public void onCreate(SQLiteDatabase db)
{
// tworzenie bazy
db.execSQL(TW_BAZY);
}
// aktualizacja bazy danych
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// kasowanie i tworzenie bazy
db.execSQL(KAS_BAZY);
onCreate(db);
}
}
a to provider:
public class MojProvider extends ContentProvider{
private PomocnikBD mPomocnikBD;
//identyfikator (ang. authority) dostawcy
private static final String IDENTYFIKATOR = "com.example.labbazy.MojProvider";
//stała – aby nie trzeba było wpisywać tekstu samodzielnie
public static final Uri URI_ZAWARTOSCI = Uri.parse("content://" + IDENTYFIKATOR + "/" + PomocnikBD.NAZWA_TABELI);
//stałe pozwalające zidentyfikować rodzaj rozpoznanego URI
private static final int CALA_TABELA = 1;
private static final int WYBRANY_WIERSZ = 2;
//UriMacher z pustym korzeniem drzewa URI (NO_MATCH)
private static final UriMatcher sDopasowanieUri = new UriMatcher(UriMatcher.NO_MATCH);
static {
//dodanie rozpoznawanych URI
sDopasowanieUri.addURI(IDENTYFIKATOR, PomocnikBD.NAZWA_TABELI, CALA_TABELA);
sDopasowanieUri.addURI(IDENTYFIKATOR, PomocnikBD.NAZWA_TABELI + "/#",WYBRANY_WIERSZ);
}
public MojProvider() {
// TODO Auto-generated constructor stub
}
@Override
public boolean onCreate() {
// otwieranie bazy danych
mPomocnikBD=new PomocnikBD(getContext());
return false;
}
//dodaje do klauzuli WHERE identyfikator wiersza odczytany z URI
private String dodajIdDoSelekcji(String selekcja, Uri uri) {
//jeżeli już jest to dodajemy tylko dodatkowy warunek
if (selekcja != null && !selekcja.equals(""))
selekcja = selekcja + " and " + PomocnikBD.ID + "=" + uri.getLastPathSegment();
//jeżeli nie ma WHERE tworzymy je od początku
else
selekcja = PomocnikBD.ID + "=" + uri.getLastPathSegment();
return selekcja;
}
public Uri insert(Uri uri, ContentValues values) {
//czy wiersz czy cała tabela i otworzenie bazy
int typUri = sDopasowanieUri.match(uri);
//otwieranie magazynu – np. bazy danych...
SQLiteDatabase baza = mPomocnikBD.getWritableDatabase();
long idDodanego = 0;
switch (typUri) {
case CALA_TABELA:
//zaposianie do magazynu – np. insert do bazy...
idDodanego = baza.insert(PomocnikBD.NAZWA_TABELI, null, values);
break;
default:
throw new IllegalArgumentException("Nieznane URI: " + uri);
}
//powiadomienie o zmianie danych (->np. odświeżenie listy)
getContext().getContentResolver().notifyChange(uri, null);
return Uri.parse(PomocnikBD.NAZWA_TABELI + "/" + idDodanego);
}
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
int typUri = sDopasowanieUri.match(uri);
//otwieranie magazynu – np. bazy danych...
SQLiteDatabase mBD = mPomocnikBD.getWritableDatabase();
Cursor kursor = null;
switch (typUri) {
case CALA_TABELA:
kursor = mBD.query(true, //distinct
PomocnikBD.NAZWA_TABELI, //tabela
new String[]{PomocnikBD.ID, PomocnikBD.KOLUMNA_PRODUCENT,
PomocnikBD.KOLUMNA_MODEL, PomocnikBD.KOLUMNA_WERSJA, PomocnikBD.KOLUMNA_WWW},//kolumny
null, //where
null, //whereArgs - argumenty zastępujące "?" w where
null, //group by
null, //having
null, //order by
null); //limit
break;
//w przypadku jednego wiersza modyfikowana jest WHERE
case WYBRANY_WIERSZ:
// umieszczenie danych w kursorze...
kursor = mBD.query(false, PomocnikBD.NAZWA_TABELI, projection,
dodajIdDoSelekcji(selection, uri), selectionArgs, null,
null, sortOrder, null, null);
break;
default:
throw new IllegalArgumentException("Nieznane URI: " + uri);
}
//URI może być monitorowane pod kątem zmiany danych – tu jest
//rejestrowane. Obserwator (którego trzeba zarejestrować
//będzie powiadamiany o zmianie danych)
kursor.setNotificationUri(getContext().getContentResolver(), uri);
return kursor;
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
public int delete(Uri uri, String selection, String[] selectionArgs) {
int typUri = sDopasowanieUri.match(uri);
//otwieranie magazynu – np. bazy danych...
SQLiteDatabase baza = mPomocnikBD.getWritableDatabase();
int liczbaUsunietych = 0;
switch (typUri) {
case CALA_TABELA:
liczbaUsunietych = baza.delete(PomocnikBD.NAZWA_TABELI, selection, selectionArgs);
break;
//modyfikowane jest WHERE
case WYBRANY_WIERSZ:
//usuwanie rekordu (może się nie udać)
liczbaUsunietych = baza.delete(PomocnikBD.NAZWA_TABELI,
dodajIdDoSelekcji(selection, uri), selectionArgs);
break;
default:
throw new IllegalArgumentException("Nieznane URI: " + uri);
}
//powiadomienie o zmianie danych
getContext().getContentResolver().notifyChange(uri, null);
return liczbaUsunietych;
}
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int typUri = sDopasowanieUri.match(uri);
//otwieranie magazynu – np. bazy danych...
SQLiteDatabase baza = mPomocnikBD.getWritableDatabase();
int liczbaZaktualizowanych = 0;
switch (typUri) {
case CALA_TABELA:
//aktualizacja...
liczbaZaktualizowanych = baza.update(PomocnikBD.NAZWA_TABELI, values, selection, selectionArgs);
break;
//modyfikacja WHERE
case WYBRANY_WIERSZ:
//aktualizacja...
liczbaZaktualizowanych = baza.update(PomocnikBD.NAZWA_TABELI, values, dodajIdDoSelekcji(selection, uri), selectionArgs);
break;
default:
throw new IllegalArgumentException("Nieznane URI: " + uri);
}
//powiadomienie o zmianie danych
getContext().getContentResolver().notifyChange(uri, null);
return liczbaZaktualizowanych;
}
}
a w main activiti wywoluje druga aktywnosc przekazujac id wiersza
[
Dodano: 18.05.2015 - 00:13]
ok juz niekatualne problem rozwiazany