作成された以外のアクティビティで作成されたデータベースを開くと問題が発生します。実際、私はそれを行う方法がわかりません。データベースが作成されたアクティビティにメソッドを挿入およびクエリすると、うまく機能します。しかし、そのデータベースを他のアクティビティで開き、クエリを使用したいと考えています。メソッドについて読みましopenOrCreateDatabase()
たが、使用方法がわかりません。createDataBase()
クラスでメソッドを使用する必要があると思いますBaza
が、( の場合のようopenOrCreateDatabase()
に) 使用方法がわかりません。誰かが私の問題を解決するのを手伝ってくれませんか?
バザコード:
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Baza extends SQLiteOpenHelper {
SQLiteDatabase db;
static final String dbName ="cookBook.db";
static final int dbVersion = 2;
// tabela przepisy
static final String TabelaPrzepisyNazwa = "Przepisy";
static final String TabPrzepisyCol1 = "_id"; static final int TabPrzepisyCol1Number = 1;
static final String TabPrzepisyCol2 = "Nazwa"; static final int TabPrzepisyCol2Number = 2;
static final String TabPrzepisyCol3 = "Kategoria"; static final int TabPrzepisyCol3Number = 3;
static final String TabPrzepisyCol4 = "Cena"; static final int TabPrzepisyCol4Number = 4;
static final String TabPrzepisyCol5 = "Przygotowanie"; static final int TabPrzepisyCol5Number = 5;
static final String TabPrzepisyCol6 = "Kalorycznosc"; static final int TabPrzepisyCol6Number = 6;
static final String TabPrzepisyCol7 = "Czas"; static final int TabPrzepisyCol7Number = 7;
static final String TabelaPrzepSkladNazwa = "PrzepSklad";
static final String TabPrzepSkladCol1 = "_id"; static final int TabPrzepSkladCol1Number = 1;
static final String TabPrzepskladCol2 = "Nazwa"; static final int TabPrzepskladCol2Number = 2;
static final String TabPrzepskladCol3 = "Ilosc"; static final int TabPrzepskladCol3Number = 3;
static final String TabPrzepskladCol4 = "IdDania"; static final int TabPrzepskladCol4Number = 4;
static final String przepisyTabCreate = "CREATE TABLE " + TabelaPrzepisyNazwa + "(" +
TabPrzepisyCol1+ " INTEGER PRIMARY KEY, " +
TabPrzepisyCol2+ " TEXT, " +
TabPrzepisyCol3+ " TEXT, " +
TabPrzepisyCol4+ " INTEGER, " +
TabPrzepisyCol5+ " TEXT, " +
TabPrzepisyCol6+ " INTEGER, " +
TabPrzepisyCol7+ " INTEGER)";
static final String przepSkladTabCreate = "CREATE TABLE " + TabelaPrzepSkladNazwa + "(" +
TabPrzepSkladCol1+ " INTEGER PRIMARY KEY, " +
TabPrzepskladCol2+ " TEXT, " +
TabPrzepskladCol3+ " INTEGER, " +
TabPrzepskladCol4+ " INTEGER)";
public Baza(Context context) {
super(context, dbName, null, dbVersion);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(przepisyTabCreate);
db.execSQL(przepSkladTabCreate);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+ TabelaPrzepisyNazwa);
db.execSQL("DROP TABLE IF EXISTS "+ TabelaPrzepSkladNazwa);
}
public void onOpen(SQLiteDatabase db) {
}
public long dodajDanieDoBazy(String name, String cat, int price, String opis, int kcal, int czas)
{
db = super.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(TabPrzepisyCol2, name);
cv.put(TabPrzepisyCol3, cat);
cv.put(TabPrzepisyCol4, price);
cv.put(TabPrzepisyCol5, opis);
cv.put(TabPrzepisyCol6, kcal);
cv.put(TabPrzepisyCol7, czas);
return (db.insert(TabelaPrzepisyNazwa, null, cv));
}
public long dodajSkladnikDoDania(String nazwaSkladnika, int iloscSkladnika, int idDania)
{
db = super.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(TabPrzepskladCol2, nazwaSkladnika);
cv.put(TabPrzepskladCol3, iloscSkladnika);
cv.put(TabPrzepskladCol4, idDania);
return (db.insert(TabelaPrzepSkladNazwa, null, cv));
}
public ArrayList<String> znajdzIdOpisDania (String phraze)
{
ArrayList<String> ListaDoZwrotu = new ArrayList<String>();
db=super.getReadableDatabase();
String[] ktoreKolumny = {TabPrzepisyCol1, TabPrzepisyCol2, TabPrzepisyCol4, TabPrzepisyCol5, TabPrzepisyCol6, TabPrzepisyCol7};
String WHERE = TabPrzepisyCol2 + " =?";
String[] wyszukiwanie = {phraze};
Cursor c = db.query(TabelaPrzepisyNazwa,ktoreKolumny,WHERE, wyszukiwanie, null, null, null);
try {
if(c.moveToFirst()) {
String temp = new String();
temp = c.getString(c.getColumnIndex(TabPrzepisyCol1));
ListaDoZwrotu.add(temp);
temp = c.getString(c.getColumnIndex(TabPrzepisyCol2));
ListaDoZwrotu.add(temp);
temp = c.getString(c.getColumnIndex(TabPrzepisyCol4));
ListaDoZwrotu.add(temp);
temp = c.getString(c.getColumnIndex(TabPrzepisyCol5));
ListaDoZwrotu.add(temp);
temp = c.getString(c.getColumnIndex(TabPrzepisyCol6));
ListaDoZwrotu.add(temp);
temp = c.getString(c.getColumnIndex(TabPrzepisyCol7));
ListaDoZwrotu.add(temp);
return ListaDoZwrotu;
}
else return null;
}
catch (Exception e) {
return null;
}
}
public ArrayList<String> znajdzSkladnikiDania (String phraze)
{
ArrayList<String> listaSkladnikow = new ArrayList<String>();
db=super.getReadableDatabase();
String[] ktoreKolumny = {TabPrzepskladCol2, TabPrzepskladCol3};
String WHERE = TabPrzepskladCol4 + " =?";
String[] wyszukiwanie = {phraze};
Cursor c = db.query(TabelaPrzepSkladNazwa,ktoreKolumny,WHERE, wyszukiwanie, null, null, null);
try {
if(c.moveToFirst()) {
do {
String temp = c.getString(c.getColumnIndex(TabPrzepskladCol2)) + " - "
+ c.getString(c.getColumnIndex(TabPrzepskladCol3));
listaSkladnikow.add(temp);
} while (c.moveToNext());
return listaSkladnikow;
}
else return null;
}
catch (Exception e) {
return null;
}
}
public ArrayList<String> find(String phraze)
{
ArrayList<String> listaWyszukan = new ArrayList<String>();
db=super.getReadableDatabase();
String[] ktoreKolumny = {TabPrzepisyCol2};
String WHERE = TabPrzepisyCol3 + " =?";
String[] wyszukiwanie = {phraze};
Cursor c = db.query(TabelaPrzepisyNazwa,ktoreKolumny,WHERE, wyszukiwanie, null, null, null);
//String zwr = Integer.toString(c.getCount());
try {
if(c.moveToFirst()) {
do {
String temp = c.getString(c.getColumnIndex(TabPrzepisyCol2));
listaWyszukan.add(temp);
} while (c.moveToNext());
return listaWyszukan;
}
else return null;
}
catch (Exception e) {
return null;
}
}
public ArrayList<String> findByPrice(int price)
{
ArrayList<String> listaWyszukan = new ArrayList<String>();
db=super.getReadableDatabase();
String[] ktoreKolumny = {TabPrzepisyCol2};
String WHERE = TabPrzepisyCol4 + " <?";
String[] wyszukiwanie = {Integer.toString(price)};
Cursor c = db.query(TabelaPrzepisyNazwa,ktoreKolumny,WHERE, wyszukiwanie, null, null, null);
try {
if(c.moveToFirst()) {
do {
String temp = c.getString(c.getColumnIndex(TabPrzepisyCol2));
listaWyszukan.add(temp);
} while (c.moveToNext());
return listaWyszukan;
}
else return null;
}
catch (Exception e) {
return null;
}
}
public void deleteAll()
{
db=super.getReadableDatabase();
db.delete(TabelaPrzepisyNazwa, null, null);
db.delete(TabelaPrzepSkladNazwa, null, null);
}
}
最初のアクティビティ コード:
bazaDanych = new Baza(getApplicationContext());
bazaDanych.deleteAll();
bazaDanych.dodajDanieDoBazy("Ex 1", "Cat1", 4, "description", 280, 40);
2 番目のアクティビティ コード:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wyszukiwarkaprzepisow);
tytul = (TextView) findViewById(R.id.textView1);
blabla = (TextView) findViewById(R.id.textView2);
ustawCzcionke(tytul);
Baza bazaDanych = new Baza(getApplicationContext());
String wyborSpinnerDania = "3";
ArrayList<String> szukaneDanie = new ArrayList<String>();
szukaneDanie = bazaDanych.znajdzIdOpisDania(wyborSpinnerDania);
blabla.setText(szukaneDanie.get(0));
//blabla.setText("exa");
}
私のデータベースへのアクセスを取得したいアクティビティに切り替えると、Logcat エラーが発生します。
W/dalvikvm(14576): threadid=1: thread Exiting with uncaught Exception (group=0x4001d5a0)
E/AndroidRuntime(14576): FATAL EXCEPTION: main
E/AndroidRuntime(14576): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kajsmig.cookBook/com.kajsmig.cookBook.WyszukiwarkaPrzepisowActivity}: java.lang.NullPointerException
E/AndroidRuntime(14576): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
E/AndroidRuntime(14576): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1692)
E/AndroidRuntime(14576): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
E/AndroidRuntime(14576): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
E/AndroidRuntime(14576): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:656)
E/AndroidRuntime(14576): at android.widget.TabHost.setCurrentTab(TabHost.java:326)
E/AndroidRuntime(14576): at com.kajsmig.cookBook.ExtendActivity.przlaczAktywnosc(ExtendActivity.java:90)
E/AndroidRuntime(14576): at com.kajsmig.cookBook.PrzepisyActivity.onGesturePerformed(PrzepisyActivity.java:293)
E/AndroidRuntime(14576): at android.gesture.GestureOverlayView.fireOnGesturePerformed(GestureOverlayView.java:728)
E/AndroidRuntime(14576): at android.gesture.GestureOverlayView.access$400(GestureOverlayView.java:55)
E/AndroidRuntime(14576): at android.gesture.GestureOverlayView$FadeOutRunnable.run(GestureOverlayView.java:743)
E/AndroidRuntime(14576): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(14576): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(14576): at android.os.Looper.loop(Looper.java:150)
E/AndroidRuntime(14576): at android.app.ActivityThread.main(ActivityThread.java:4385)
E/AndroidRuntime(14576): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(14576): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(14576): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
E/AndroidRuntime(14576): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
E/AndroidRuntime(14576): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(14576): Caused by: java.lang.NullPointerException
E/AndroidRuntime(14576): at com.kajsmig.cookBook.WyszukiwarkaPrzepisowActivity.onCreate(WyszukiwarkaPrzepisowActivity.java:50)
E/AndroidRuntime(14576): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
E/AndroidRuntime(14576): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
E/AndroidRuntime(14576): ... 19 more
何を変更、追加、または削除する必要がありますか?