A
alpha23
Neues Mitglied
- 0
Ich habe folgendes problem! ich versuche gerade für ein Schulprojekt einen Vokabeltrainer auf Android-Basis zu Programmieren und bekomme probleme beim insert befehl! Ich habe eine Datenbankklasse in der ich meine zwei Tabellen anlege.
Und dann habe ich mehrere activitys in denen ich über ein Textfeld in diese Datenbank über den Insertbefehl etwas eintrage. In die erste Tabelle Funktioniert das auch und ich kann den Eintrag auch wieder Löschen aber in der Zweiten Tabelle weiß ich jetzt nicht wie ich die einträge machen soll und wie ich die Beiden Tabellen mit einander Verknüpfe.
Hier der Quelltext dazu!
----Datenbanklasse--------->>>
package com.vokabeltrainer;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Datenbank extends SQLiteOpenHelper{
private static final String DB_NAME = "Tabellen";
private static final int DB_VERSION = 1;
private static String KLASSEN_DROP =
"DROP TABLE IF EXISTS Lektionen";
private static final String KLASSEN1_CREATE =
"CREATE TABLE Lektionen(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"Lektionsname TEXT NOT NULL"+
")";
private static final String KLASSEN_SELECT_RAW =
"SELECT _id, Lektionsname from Lektionen";
private static final String KLASSEN2_CREATE =
"CREATE TABLE klassen(" +
"_id PRIMARY KEY AUTOINCREMENT," +
"vokabel varchar(50) NOT NULL"+
"uebersetzung varchar(50) NOT NULL"+
"kommentar varchar(50)"+
"_id integer"+
"lernfortschritt integer not null"+
"lernhauefigkeit int not null"+
")";
public Datenbank(Context context, String name12) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(KLASSEN1_CREATE);
db.execSQL(KLASSEN2_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(KLASSEN_DROP);
this.onCreate(db);
}
}//mainClass
-------LektionenOeffnenActivity---->>>>>>
package com.vokabeltrainer;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class LektionOeffnenActivity extends ListActivity{
private SQLiteDatabase mDatenbank;
private Datenbank mHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainleoe);
mHelper = new Datenbank(this, null);
}//LektionOeffnenActivity
@Override
protected void onPause() {
mDatenbank.close();
Toast.makeText(this,
R.string.datenBankSchliessen,
Toast.LENGTH_SHORT).show();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
mDatenbank = mHelper.getReadableDatabase();
Toast.makeText(this,
R.string.datenBankOeffnen,
Toast.LENGTH_SHORT).show();
ladeDaten();
}
private void ladeDaten() {
// Cursor klassencursor =Datenbank.rawQuery(KLASSEN_SELECT_RAW, null); //zeiger auf element der ergebnismenge
// mDatenbank.rawQuery(KLASSEN_SELECT_RAW, null);
Cursor klassencursor =mDatenbank.query("Lektionen",
new String[] {
"_id",
"Lektionsname"
},
null, null, null, null, null);
startManagingCursor(klassencursor);
SimpleCursorAdapter klassenadapter = new SimpleCursorAdapter (this, android.R.layout.simple_list_item_1,klassencursor,
new String[] {"Lektionsname"},
new int []{android.R.id.text1}
);
setListAdapter(klassenadapter);
}
}//mainClass
------------LektionErstellenActivity------>>>>>>
package com.vokabeltrainer;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class LektionErstellenActivity extends ListActivity{
private SQLiteDatabase mDatenbank;
private Datenbank mHelper;
final static String MY_DB_NAME= "Tabellen";
final static String MY_DB_TABLE="Lektionen";
final static String tag="ensacom";
private static final int COLUM_INDEX_TITLE=1;
public static final int EDIT_ID = Menu.FIRST;
public static final int DELETE_ID = Menu.FIRST+1;
private static final String KLASSEN_SELECT_RAW =
"SELECT _id, Lektionsname FROM Lektionen";
private static final int COLUMN_INDEX_TITLE = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainle);
mHelper = new Datenbank(this, null);
registerForContextMenu(getListView());
Button lektionAnlegen;
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Intent myIntent = new Intent(view.getContext(),LektionEingebenActivity.class);
startActivityForResult(myIntent,0);
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
mDatenbank.close();
}
});
lektionAnlegen = (Button) this.findViewById(R.id.lektionAnlegen);
lektionAnlegen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText et =
(EditText) findViewById(R.id.textFeld);
ContentValues werte = new ContentValues();
werte.put("Lektionsname", et.getText().toString());
mDatenbank.insert("Lektionen",null,werte);
ladeDaten();
et.setText("");
}//LEKTION ANLEGEN
});
}//LektionErstellenActivity
@Override
protected void onPause() {
mDatenbank.close();
Toast.makeText(this,
R.string.datenBankSchliessen,
Toast.LENGTH_SHORT).show();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
mDatenbank = mHelper.getReadableDatabase();
Toast.makeText(this,
R.string.datenBankOeffnen,
Toast.LENGTH_SHORT).show();
ladeDaten();
}
private void ladeDaten() {
// Cursor klassencursor =Datenbank.rawQuery(KLASSEN_SELECT_RAW, null); //zeiger auf element der ergebnismenge
mDatenbank.rawQuery(KLASSEN_SELECT_RAW, null);
Cursor klassencursor =mDatenbank.query("Lektionen",
new String[] {
"_id",
"Lektionsname"
},
null, null, null, null, null);
startManagingCursor(klassencursor);
SimpleCursorAdapter klassenadapter = new SimpleCursorAdapter (this, android.R.layout.simple_list_item_1,klassencursor,
new String[] {"Lektionsname"},
new int []{android.R.id.text1}
);
setListAdapter(klassenadapter);
}
//---------------------->>>>
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
Log.d("Tabellen", "Test ");
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
Log.e("Tabellen", "bad menuInfo", e);
return;
}
Cursor cursor = (Cursor) getListAdapter().getItem(info.position);
if (cursor == null) {
// For some reason the requested item isn't available, do nothing
return;
}
menu.setHeaderTitle(cursor.getString(COLUMN_INDEX_TITLE));
// menu.add(0, EDIT_ID, 0, R.string.cmEdit);
menu.add(0, DELETE_ID, 0, "Löschen");
}
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e("Tabellen", "bad menuInfo", e);
return false;
}
switch (item.getItemId()) {
// case EDIT_ID:
// Log.d("Guide", "Bearbeite Sehenswürdigkeit: "+""+info.id);
// return true;
case DELETE_ID:
Log.d("Lektionen", "Lösche Lektion: "+""+info.id);
delete(info.id);
ladeDaten();
return true;
default:
Log.d("Lektionen", "Test "+""+info.id);
return super.onContextItemSelected(item);
}
}
public void delete(long _id)
{
String message;
message="DELETE FROM Lektionen WHERE _id="+_id;
mDatenbank.execSQL(message);
// return Datenbank.delete(MY_DB_TABLE, _id + "=" + _id, null) > 0;
}
}//mainClass
Die Activity in der der Eintag in die zweite Tabelle erfolgen soll und in der die beiden Tabellen miteinander Verknüpft werden.
-----------VokabelEingebenActivity--------->>>>>>>
package com.vokabeltrainer;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LektionEingebenActivity extends ListActivity{
private SQLiteDatabase mDatenbank;
private Datenbank mHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlekein);
Button vokabelAnlegen;
vokabelAnlegen = (Button) this.findViewById(R.id.button1);
vokabelAnlegen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Context context = getApplicationContext();
// CharSequence text = "Hello toast!";
// int duration = Toast.LENGTH_SHORT;
//
// Toast toast = Toast.makeText(context, text, duration);
// toast.show();
EditText et = (EditText) findViewById(R.id.button1);
//
//
ContentValues werte = new ContentValues();
werte.put("vokabel", et.getText().toString());
werte.put("uebersetzung", et.getText().toString());
mDatenbank.insert("klassen", null, werte);
// ladeDaten();
}
});
}//LektionEingebenActivity
}//mainClass
Vielen Dank schon mal
alpha23
Und dann habe ich mehrere activitys in denen ich über ein Textfeld in diese Datenbank über den Insertbefehl etwas eintrage. In die erste Tabelle Funktioniert das auch und ich kann den Eintrag auch wieder Löschen aber in der Zweiten Tabelle weiß ich jetzt nicht wie ich die einträge machen soll und wie ich die Beiden Tabellen mit einander Verknüpfe.
Hier der Quelltext dazu!
----Datenbanklasse--------->>>
package com.vokabeltrainer;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Datenbank extends SQLiteOpenHelper{
private static final String DB_NAME = "Tabellen";
private static final int DB_VERSION = 1;
private static String KLASSEN_DROP =
"DROP TABLE IF EXISTS Lektionen";
private static final String KLASSEN1_CREATE =
"CREATE TABLE Lektionen(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"Lektionsname TEXT NOT NULL"+
")";
private static final String KLASSEN_SELECT_RAW =
"SELECT _id, Lektionsname from Lektionen";
private static final String KLASSEN2_CREATE =
"CREATE TABLE klassen(" +
"_id PRIMARY KEY AUTOINCREMENT," +
"vokabel varchar(50) NOT NULL"+
"uebersetzung varchar(50) NOT NULL"+
"kommentar varchar(50)"+
"_id integer"+
"lernfortschritt integer not null"+
"lernhauefigkeit int not null"+
")";
public Datenbank(Context context, String name12) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(KLASSEN1_CREATE);
db.execSQL(KLASSEN2_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(KLASSEN_DROP);
this.onCreate(db);
}
}//mainClass
-------LektionenOeffnenActivity---->>>>>>
package com.vokabeltrainer;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class LektionOeffnenActivity extends ListActivity{
private SQLiteDatabase mDatenbank;
private Datenbank mHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainleoe);
mHelper = new Datenbank(this, null);
}//LektionOeffnenActivity
@Override
protected void onPause() {
mDatenbank.close();
Toast.makeText(this,
R.string.datenBankSchliessen,
Toast.LENGTH_SHORT).show();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
mDatenbank = mHelper.getReadableDatabase();
Toast.makeText(this,
R.string.datenBankOeffnen,
Toast.LENGTH_SHORT).show();
ladeDaten();
}
private void ladeDaten() {
// Cursor klassencursor =Datenbank.rawQuery(KLASSEN_SELECT_RAW, null); //zeiger auf element der ergebnismenge
// mDatenbank.rawQuery(KLASSEN_SELECT_RAW, null);
Cursor klassencursor =mDatenbank.query("Lektionen",
new String[] {
"_id",
"Lektionsname"
},
null, null, null, null, null);
startManagingCursor(klassencursor);
SimpleCursorAdapter klassenadapter = new SimpleCursorAdapter (this, android.R.layout.simple_list_item_1,klassencursor,
new String[] {"Lektionsname"},
new int []{android.R.id.text1}
);
setListAdapter(klassenadapter);
}
}//mainClass
------------LektionErstellenActivity------>>>>>>
package com.vokabeltrainer;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class LektionErstellenActivity extends ListActivity{
private SQLiteDatabase mDatenbank;
private Datenbank mHelper;
final static String MY_DB_NAME= "Tabellen";
final static String MY_DB_TABLE="Lektionen";
final static String tag="ensacom";
private static final int COLUM_INDEX_TITLE=1;
public static final int EDIT_ID = Menu.FIRST;
public static final int DELETE_ID = Menu.FIRST+1;
private static final String KLASSEN_SELECT_RAW =
"SELECT _id, Lektionsname FROM Lektionen";
private static final int COLUMN_INDEX_TITLE = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainle);
mHelper = new Datenbank(this, null);
registerForContextMenu(getListView());
Button lektionAnlegen;
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Intent myIntent = new Intent(view.getContext(),LektionEingebenActivity.class);
startActivityForResult(myIntent,0);
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
mDatenbank.close();
}
});
lektionAnlegen = (Button) this.findViewById(R.id.lektionAnlegen);
lektionAnlegen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText et =
(EditText) findViewById(R.id.textFeld);
ContentValues werte = new ContentValues();
werte.put("Lektionsname", et.getText().toString());
mDatenbank.insert("Lektionen",null,werte);
ladeDaten();
et.setText("");
}//LEKTION ANLEGEN
});
}//LektionErstellenActivity
@Override
protected void onPause() {
mDatenbank.close();
Toast.makeText(this,
R.string.datenBankSchliessen,
Toast.LENGTH_SHORT).show();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
mDatenbank = mHelper.getReadableDatabase();
Toast.makeText(this,
R.string.datenBankOeffnen,
Toast.LENGTH_SHORT).show();
ladeDaten();
}
private void ladeDaten() {
// Cursor klassencursor =Datenbank.rawQuery(KLASSEN_SELECT_RAW, null); //zeiger auf element der ergebnismenge
mDatenbank.rawQuery(KLASSEN_SELECT_RAW, null);
Cursor klassencursor =mDatenbank.query("Lektionen",
new String[] {
"_id",
"Lektionsname"
},
null, null, null, null, null);
startManagingCursor(klassencursor);
SimpleCursorAdapter klassenadapter = new SimpleCursorAdapter (this, android.R.layout.simple_list_item_1,klassencursor,
new String[] {"Lektionsname"},
new int []{android.R.id.text1}
);
setListAdapter(klassenadapter);
}
//---------------------->>>>
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
Log.d("Tabellen", "Test ");
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
Log.e("Tabellen", "bad menuInfo", e);
return;
}
Cursor cursor = (Cursor) getListAdapter().getItem(info.position);
if (cursor == null) {
// For some reason the requested item isn't available, do nothing
return;
}
menu.setHeaderTitle(cursor.getString(COLUMN_INDEX_TITLE));
// menu.add(0, EDIT_ID, 0, R.string.cmEdit);
menu.add(0, DELETE_ID, 0, "Löschen");
}
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info;
try {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
Log.e("Tabellen", "bad menuInfo", e);
return false;
}
switch (item.getItemId()) {
// case EDIT_ID:
// Log.d("Guide", "Bearbeite Sehenswürdigkeit: "+""+info.id);
// return true;
case DELETE_ID:
Log.d("Lektionen", "Lösche Lektion: "+""+info.id);
delete(info.id);
ladeDaten();
return true;
default:
Log.d("Lektionen", "Test "+""+info.id);
return super.onContextItemSelected(item);
}
}
public void delete(long _id)
{
String message;
message="DELETE FROM Lektionen WHERE _id="+_id;
mDatenbank.execSQL(message);
// return Datenbank.delete(MY_DB_TABLE, _id + "=" + _id, null) > 0;
}
}//mainClass
Die Activity in der der Eintag in die zweite Tabelle erfolgen soll und in der die beiden Tabellen miteinander Verknüpft werden.
-----------VokabelEingebenActivity--------->>>>>>>
package com.vokabeltrainer;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LektionEingebenActivity extends ListActivity{
private SQLiteDatabase mDatenbank;
private Datenbank mHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlekein);
Button vokabelAnlegen;
vokabelAnlegen = (Button) this.findViewById(R.id.button1);
vokabelAnlegen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Context context = getApplicationContext();
// CharSequence text = "Hello toast!";
// int duration = Toast.LENGTH_SHORT;
//
// Toast toast = Toast.makeText(context, text, duration);
// toast.show();
EditText et = (EditText) findViewById(R.id.button1);
//
//
ContentValues werte = new ContentValues();
werte.put("vokabel", et.getText().toString());
werte.put("uebersetzung", et.getText().toString());
mDatenbank.insert("klassen", null, werte);
// ladeDaten();
}
});
}//LektionEingebenActivity
}//mainClass
Vielen Dank schon mal
alpha23