Wie kann ich Information von der Datenbank lesen

[/QUOTE][QUOTE]
Hallo Leute,

Nach Stundenlange ausprobieren, möchte ich euch um die Hilfe bieten.

ich versuche android programmieren zu lernen und habe ich vorgenommen ein kleines Projekt zu machen. Ich mache BarcodeScannerApp.
Layout wie es aussehen soll steht im Anhang

ich mache diese Tutorium und habe ich mehrere Fragen

1.Habe ich in MainActivity die Methode onCreate richtig implementiert?

2.Muss ich in der MainActivity in der Methode onClick von der Klasse FeedReaderDbHelper die Methode insertData aufrufen?

  1. in meinem Fall brauche ich doch public static final String COLUMN_NAME_ENTRY_ID = "entryid"; nicht?
  1. in der Methode insertData ist rückgabewert long und warum wird kein Fehler gezeigt wo in der Methode kein return steht?
  1. in der klasse FeedReaderContract diese Zeile FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext()); gibt mir Fehler dass getContext() nicht definiert ist
  1. habe ich insertData richtig umgeschrieben?
  1. ich habe keine Ahnung wie ich returnData() an mein Code anpassen soll. Könnt ihr mir helfen?
	public static final String EXTRA_BARCODE = "extraBarcode";
	public static final String EXTRA_FORMAT = "extraFormat";
	public final static String EXTRA_MESSAGE = "com.example.pricescannerapp.MESSAGE";

	private IntentIntegrator mIntentIntegrator;

	private FeedReaderDbHelper mDbHelper;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		this.mIntentIntegrator = new IntentIntegrator(this);

		mDbHelper = new FeedReaderDbHelper(this);

	}

	public void onClick(View view) {

		this.mIntentIntegrator.initiateScan();

	}

	public void showProducts(View view) {

	}

	

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent intent) {
		IntentResult scanResult = IntentIntegrator.parseActivityResult(
				requestCode, resultCode, intent);

		if (scanResult != null) {
			String barcode;
			String type;

			barcode = scanResult.getContents();
			type = scanResult.getFormatName();

			EditText edit_barcode = (EditText) findViewById(R.id.etBarcode);
			edit_barcode.setText(barcode);

			EditText edit_type = (EditText) findViewById(R.id.etType);
			edit_type.setText(type);

		}

	}
}

public class FeedReaderDbHelper extends SQLiteOpenHelper {
	// If you change the database schema, you must increment the database
	// version.
	public static final int DATABASE_VERSION = 1;
	public static final String DATABASE_NAME = "product.db";

	private static final String TEXT_TYPE = " TEXT";
	private static final String COMMA_SEP = ",";
	
	

	private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "
			+ FeedEntry.TABLE_NAME + " (" + FeedEntry._ID
			+ " INTEGER PRIMARY KEY," + FeedEntry.COLUMN_NAME_BARCODE
			+ TEXT_TYPE + COMMA_SEP + FeedEntry.COLUMN_NAME_TYPE + TEXT_TYPE +

			" )";

	private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS "
			+ FeedEntry.TABLE_NAME;

	public FeedReaderDbHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	public void onCreate(SQLiteDatabase db) {
		db.execSQL(SQL_CREATE_ENTRIES);
	}

	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// This database is only a cache for online data, so its upgrade policy
		// is
		// to simply to discard the data and start over
		db.execSQL(SQL_DELETE_ENTRIES);
		onCreate(db);
	}

	public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		onUpgrade(db, oldVersion, newVersion);
	}

	

}```


```public final class FeedReaderContract {
	// To prevent someone from accidentally instantiating the contract class,
	// give it an empty constructor.
	public FeedReaderContract() {
	}
	FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext());
	
	public long insertData(String barcode, String type) {
		// Gets the data repository in write mode
		SQLiteDatabase db = mDbHelper.getWritableDatabase();

		// Create a new map of values, where column names are the keys
		ContentValues values = new ContentValues();

		values.put(FeedEntry.COLUMN_NAME_BARCODE, barcode);
		values.put(FeedEntry.COLUMN_NAME_TYPE, type);

		// Insert the new row, returning the primary key value of the new row
		long newRowId;
		newRowId = db.insert(FeedEntry.TABLE_NAME, null, values);

	}

	public Cursor returnData() {

		SQLiteDatabase db = mDbHelper.getReadableDatabase();

		// Define a projection that specifies which columns from the database
		// you will actually use after this query.
		String[] projection = { FeedEntry._ID, FeedEntry.COLUMN_NAME_TITLE,
				FeedEntry.COLUMN_NAME_UPDATED,

		};

		// How you want the results sorted in the resulting Cursor
		String sortOrder = FeedEntry.COLUMN_NAME_UPDATED + " DESC";

		Cursor c = db.query(FeedEntry.TABLE_NAME, // The table to query
				projection, // The columns to return
				selection, // The columns for the WHERE clause
				selectionArgs, // The values for the WHERE clause
				null, // don't group the rows
				null, // don't filter by row groups
				sortOrder // The sort order
				);

		cursor.moveToFirst();
		long itemId = cursor.getLong(cursor
				.getColumnIndexOrThrow(FeedEntry._ID));

	}
	/* Inner class that defines the table contents */
	public static abstract class FeedEntry implements BaseColumns {
		public static final String TABLE_NAME = "products";
		public static final String COLUMN_NAME_BARCODE = "barcode";
		public static final String COLUMN_NAME_TYPE = "type";

	}

}

Auf eure Antwort wurde ich mich sehr freuen
Lg Anno

puh, grundsätzlich gebe ich gedanklich auf, weiter allzu genau reinzuschauen,
du brauchst wohl jemand der komplett deine Programme begleitet,

auch wenn ich mich jedesmal selbst klapse, schreibe ich es wieder einmal: wie wäre es mit einem Android-Forum?

insgesamt unglückliche Kombination von anscheinend kaum vorhandenen Java-Kenntnissen,
kaum Android-Grundkenntnissen und dann auch noch so komplexe Aufgabenstellungen darin…

ein bisschen noch kann ich dazuschreiben

wenn du in onClick, anscheinend bei einem Klick zu einer bestimmten Situation, etwas in die DB einfügen willst, dann ist ein insertDate-Aufruf passend, sonst nicht,
das ist doch einfach überschaubar? es gibt kein richtig oder falsch, nur deine Ziele und deren Umsetzung,

was bei onCreate technisch nötig ist (etwa der super-Aufruf) kann ich nicht sagen,
kopiere schlaue Beispiele und achte bei eigenen Versuchen auf Fehler,

Inialisierung von speziellen Dingen wie IntentIntegrator bietet sich meist früh einmalig an,
im Konstruktor oder eben hier onCreate,
kann man sich als Standard ruhig merken, für 5 Klicks nur 1x statt 5x, wenn es so gut geht,

aber es ist auch nicht verboten es anders zu machen, falls es keine Fehler gibt,
ausprobieren und lernen, ein Computer hat den schätzenswerten Vorteil, normalerweise nicht endgültig kaputt zu gehen!

[QUOTE=anni80;99727]
5. in der klasse FeedReaderContract diese Zeile gibt mir Fehler dass getContext() nicht definiert ist [/quote]
getApplicationContext() gibt es anscheinend, in einer View gäbe es getContext(),

[QUOTE=anni80;99727]
4. in der Methode insertData ist rückgabewert long und warum wird kein Fehler gezeigt wo in der Methode kein return steht? [/quote]
wenn es andere Fehler gibt darf man nie irgendwas erwarten, der Compiler ist nicht zwingend allmächtig, alles gleich zu erkennen

{
    String a = xy();

    public long test()
    {
    }
}

hier wird auch nur xy() angemeckert, ist das weg, dann geht es an long-Rückgabewert

einen Fehler nach dem anderen, nur wenn nichts bemeckert wird ist das eine verläßliche Aussage

JA ich weiß. Ich hacke so lange an Programmieren aber wirklich Gefühl habe ich nicht bekommen. so zu sagen, das ist mein letzet Kampf und werde ich entscheiden ob ich das wirklich machen möchte :slight_smile:

danke für deine Post

Lg Anno

Mir fehlt hier gerade leider die Zeit mich mit deinem Problem richtig auseinander zusetzen. Deswegen mein erster Tipp: in Zukunft könntest du soetwas vllt versuchen auf mehrere Themen zu verteilen. Aber ok b2t: für dein Problem würde ich eher das Tutorial von Vogella empfehlen: http://www.vogella.com/tutorials/AndroidSQLite/article.html. Ich denke dass hilft dir besser — dann da hast du nicht nur Codefetzen, sondern er erklärt dir das Thema wirklich anhand einer App.

danke , das ist extremst nett von dir. ich wollte euch nicht so viel nerven und deswegen habe ich in ein post alles geschrieben. Ich werde mal den Tutorium machen und werde ich mich ganz sicher mit fragen melden

Ein Forum ist dafür da um Fragen zu stellen ;-). Also teil das ruhig auf, wenn es sinnvoll möglich ist. Ich hab bei solchen Fragen immer den Drang zu versuchen alles auf einmal zu beantworten, dann bleibt das Thema eine Zeitlang im Tab offen - weil ich später ja vielleicht mehr Zeit haben könnte. Und ich denke so geht es anderen auch, also erhöhst du einfach mit der Aufteilung die Chance, dass dir jemand zeitnah antwortet.

@Tomate_Salat : ich habe von dir empfohlene Tutorial gemacht (de.vogella.android.sqlite.first) und wenn ich ausführe wird app gleich gestoppt.

was mein Projekt angeht , habe ich zum Laufen gebracht,aber diese Version hat mir nicht gefallen, aber als ich ein bisschen anderes implementiert habe, wurde display nachdem Scannen gleich schwarz.


edit SlaterB: gleich Link auf das neue Thema dazu:
http://forum.byte-welt.net/threads/12710-PriceScannerApp-warum-wird-nach-dem-Scannen-Display-gleich-schwarz

Dann ist da wohl ein Fehler in deinem Code. Aber ohne Code und Fehlermeldung kann man dazu nichts sagen

da bin ich mit meinem edit ja etwas zu spät gekommen :wink: , gibt ein eigenes Thema,
so viele im Forum eigentlich (leider) auch nicht, als das die Übersicht verloren ginge

code habe ich mit einem neuen Forumseintag gepostet
@SlaterB : dein comentar habe ich zu spät kapiert :slight_smile:

Ok, dann meine Bitte für die Zukunft: Wenn dein Problem sich auf ein anderes Thema bezieht, dann verlinke es auch bitte

Was benutzt ihr generell für ein JDK … ?