| |||||||
Das Thema "Datenbank column existiert angeblich nicht" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) | |
| Junior Mitglied Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
| ich bin gerade dabei ein Haushaltsbuch zu schreiben. In meiner StartseiteActivity will ich dazu zu Testzwecken einen Eintrag in eine Datenbank machen. Dies hab ich mir gedacht kann ich in der onCreate Methode machen. Wenn es einmal geklappt hat kommt der Source Code für den manuellen Eintrag dort wieder raus. Hier mein Quellcode: Code: package micka.haushaltsbuch;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
public class Startseiteactivity extends Activity {
final static String MY_DB_NAME = "FinanzenDB";
final static String MY_DB_TABLE = "eintraege";
final static String tag="ensacom";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SQLiteDatabase myDB = null;
try {
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS tabellen"
+ " (_id integer primary key autoincrement,"
+ " tabellenname text not null)"
+ ";");
myDB.execSQL("INSERT INTO tabellen (tabellenname) "
+"VALUES('eintraege');");
} finally {
if (myDB != null)
myDB.close();
}
onCreateDBAndDBTabled();
setContentView(R.layout.startseitelayout);
}
/** Erzeugt Menüeintrag beenden **/
public static final int beenden_ID = Menu.FIRST;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, beenden_ID, Menu.NONE, "beenden");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case beenden_ID:
finish();
default:
return super.onOptionsItemSelected(item);
}
}
//ButtonFunktionen
public void onClickEintragHinzufuegen(final View sfNormal)
{
final Intent i = new Intent(this, EintragHinzufuegenActivity.class);
startActivity(i);
}
public void onClickEintraegeAnzeigen(final View sfNormal)
{
final Intent i = new Intent(this, TabellenAnzeigenActivity.class);
startActivity(i);
}
/** Datenbank und Tabellen erstellen wenn noch nicht vorhanden */
private void onCreateDBAndDBTabled()
{
SQLiteDatabase myDB = null;
try {
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE
+ " (_id integer primary key autoincrement,"
+ " day integer(2), month integer(2),"
+ " year integer(4), wofuer text not null,"
+ " betrag real)"
+";");
} finally {
if (myDB != null)
myDB.close();
}
}
} Direkt danach will ich einen Eintrag machen. Dabei kommen Exceptions hier mein LogCat: Zitat:
| |
| | |
| | #2 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
hmm die tabelle wird nur genau einmal erzeugt. wenn du später dann eine spalte im code hinzufügst, musst du die app komplett neu installieren, damit das möglich ist ( oder eben die tabelle über ein alter table statement erweitern) ist nur ne vermutung, dass das dein problem ist.
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| | #3 (permalink) |
| Junior Mitglied Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
|
vielleicht ist es interessant die Struktur vom Rest der App zu kennen. Es gibt eine Activity zum hinzufügen von Einträgen die funktioniert auch soweit. Die einträge werden dann in eine beliebige anzugebene Tabelle der Datenbank eingetragen. zum testen habe ich die tabelle "eintraege" der Datenbank "FinanzenDB" gewählt. Wenn ich nun die Einträge anzeigen will will ich das der User erstmal eine Auswahl der existierenden Tabellen gezeigt kriegt und sich dann für eine Tabelle entscheidet. Die Methode zum anlegen neuer Tabellen habe ich noch nicht implementiert. Deshalb möchte ich testweise diese eine tabelle "eintraege" in die Datenbank eintragen. Später wird es eine eigene Activity geben bzw in einem headerLayout oberhalb der angezeigten Tabellen soll es die Möglichkeit geben eine neue Tabelle anzulegen wenn keine der existierenden gewünscht ist. |
| | |
| | #4 (permalink) |
| Junior Mitglied Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
|
@ Swordi Die Tabelle tabellen soll nur diese eine Spalte haben und auch nie erweitert werden. Sinn ist es nur hier die Strings MY_DB_TABLE auszulagern damit man später in einer anderen Activity auf alle existierenden tabellen zugreifen kann. |
| | |
| | #5 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
hast versucht mal die app zu deinstallieren und nochmal zu installieren? dann musst du ins detail rein debuggen. sonst wirds wohl schwer. btw: pms helfen nicht dabei schneller eine antwort zu bekommen
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| Folgender Benutzer bedankt sich bei swordi für diesen Beitrag: | Micka (04.01.2012) |
| | #8 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
die app wird von eclipse nur upgedated nicht komplett neu installiert. danke button befindet sich rechts unten
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| Folgender Benutzer bedankt sich bei swordi für diesen Beitrag: | Micka (04.01.2012) |
| | #9 (permalink) |
| Android Guru Modell: Samsung Galaxy S (I9000) Registriert seit: 21.12.2009
Beiträge: 2.572
Abgegebene Danke: 76
Erhielt 506 Danke für 295 Beiträge
|
n schönen "no such column" fehler hab ich momentan auch... Scheint aber eine Eigenheit der Contacts db zu sein.. folgender Code Code: ContentResolver resolver = context.getContentResolver();
Uri uri = ContactsContract.StatusUpdates.CONTENT_URI;
String[] columns = new String[]{ ContactsContract.StatusUpdates.STATUS };
String where = ContactsContract.StatusUpdates.IM_HANDLE+"=?";
Cursor lastStatus = resolver.query(uri, columns, where, new String[]{clickedContact}, null); 01-04 20:59:31.092: E/AndroidRuntime(10619): Caused by: android.database.sqlite.SQLiteException: no such column: im_handle: , while compiling: SELECT status FROM view_data data LEFT OUTER JOIN status_updates ON (status_updates.status_update_data_id=data._id) WHERE ((im_handle=?)) Ändere ich die Projektion, läufts ![]() Code:
String[] columns = new String[]{ ContactsContract.StatusUpdates.PRESENCE }; Laut ContactsContract.StatusUpdates | Android Developers müsste das doch funktionieren. :s Muss wohl eine "Optimierung" sein.. Mit Code: String[] columns = new String[]{ ContactsContract.StatusUpdates.PRESENCE, ContactsContract.StatusUpdates.STATUS };
__________________ Meine Apps: GTalk Widget free Filehosting mit direkt download links & ohne werbung Geändert von Fr4gg0r (04.01.2012 um 21:25 Uhr) |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Fehler bei Standardbrowser: error on line 14 at column 53: xmlParseEntityRef: no name | Anita84 | Samsung Galaxy S (I9000) Forum | 6 | 09.11.2011 10:43 |
| Mehre Daten in SQL-Datenbank| einzelne Zeile aus Datenbank löschen | Nivel | Android App Entwicklung | 17 | 23.07.2011 13:41 |
| SQlite : Datenbank verschlüsselt oder keine gültige Datenbank | RED-BARON | Android App Entwicklung | 0 | 07.04.2011 11:20 |
| /system/bin/su existiert nicht? | MisterD | Root / Hacking / Modding für Motorola Milestone | 8 | 21.11.2010 22:07 |
| SMS löschen die nicht existiert! | Zwa Komma Dreizehn | Samsung Galaxy Spica (I5700) Forum | 0 | 18.09.2010 18:31 |