Android, problem z SQLite

Android, problem z SQLite
DR
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Geneva
0

Witam, problem jest następujący:

próbuje sobie zrobić activity, gdzie po kliknięciu w button będzie dodawana do bazy danych zawartość formularza. Niby proste, ale:

  1. Bazę tworze (lub sprawdzam, czy istnieje) już w metodzie onCreate
  2. Egzekucję SQLa wykonuje już w metodzie onClick

i teraz tak: w onclick wywala błąd, że baza musi być final. Gdy dodam jej final, to w onCreate (przy tworzeniu) wywala błąd, że baza nie może być final.

Ktoś ma jakiś pomysł czym może to być spowodowane? Załączam poniżej kod:

Kopiuj
public class Main extends Activity {

	Button dodaj;
	Button zobacz;
	EditText wpisz;
	private final String DB_NAME = "mojaBaza";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		SQLiteDatabase baza = null;
        
        try{        
         
         baza = this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
         baza.execSQL("CREATE TABLE IF NOT EXISTS Samochody (Marka VARCHAR)");
         
        } catch(SQLException e) {
        	Log.e(getClass().getSimpleName(), "Nie mozna utworzyc, badz otworzyc bazy danych"); }
  
		dodaj = (Button) findViewById(R.id.button1);
		zobacz = (Button) findViewById(R.id.button2);
		wpisz = (EditText) findViewById(R.id.e1);
	
        dodaj.setOnClickListener(new OnClickListener() {
        	 
            public void onClick(View v) {
            		
            		baza.execSQL("INSERT INTO Samochody  Values('" + wpisz.getText().toString() + "');");
            	
            }
        });

        
	}
}
DR
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Geneva
0

zapomniałem tą egzekucję w onClick opatrzyć mianem wyjątku, ale nic to nie zmienia...

TO
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Kraków
  • Postów:9
0

przenieś deklaracje "SQLiteDatabase baza = null;" tuż pod "private final String DB_NAME = "mojaBaza";" i myślę że będzie śmigać :)

DR
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Geneva
0

Działa, dziękować serdecznie :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.