German Autowert für SQL-Eintrag

sendman

Member
Licensed User
Hi,

ich taste mich gerade an die Anbindung an eine SQL-Verbindung heran. Dabei ist mir aufgefallen, das ich in meinen neuen Datensatz die ID nicht mit einem Autowert (in aufsteigender Reihenfolge) anlegen kann.

Besteht in der SQLite-Version dieser Befehl nicht, oder muss ich bei jedem neuen DS den letzten Wert ermitteln und +1 rechnen?

Wäre um Lösungsansätze dankbar. :sign0085:

Gruß

Stefan
 

corwin42

Expert
Licensed User
Longtime User
Hallo,

in meiner Anwendung benutze ich folgendes, um die Tabelle anzulegen:

B4X:
 sqlcmd3.New1("create table koord (id integer primary key autoincrement, lat, lon, type)", sqlcon.Value)
 sqlcmd3.ExecuteNonQuery

Beim Insert wird die Spalte ID dann nicht mit angegeben.

Gruß,
Markus
 

sendman

Member
Licensed User
Hallo Markus,

besten Dank für Deinen Tipp.
Mir fehlte nur der Zusatz "autoincrement" in meiner Tabelle.
Jetzt werden meine DS automatisch mit dem Autowert angelegt.

Gruß
Stefan
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo corwin42,

B4X:
 sqlcmd3.New1("create table koord (id integer primary key autoincrement, lat, lon, type)", sqlcon.Value)
 sqlcmd3.ExecuteNonQuery

Wenn ich deine Zeile wie folgt verwende:

Command.New1("create table koord (ID integer primary key autoincrement, lat, lon, type)", Connection.Value)
... dann müsste es doch klappen, oder?

Wo wird dann die ID hingeschrieben?
Wofür stehen die Begriffe "lat", "lon","type" ?
 

specci48

Well-Known Member
Licensed User
Longtime User
Hallo JOTHA,

der Befehl

create table koord (ID integer primary key autoincrement, lat, lon, type)

legt eine neue Tabelle "koord" mit vier Spalten an. Die erste Spalte dient als Primärschlüssel und wird beim Insert automatisch mit einem (aufsteigenden) eindeutigen Schlüssel gefüllt.
"lat", "lon" und "type" sind die Namen der Spalten 2, 3 und 4.

Falls Du diesen Befehl bei Dir einsetzen willst, musst Du hier Deine eigenen Spaltenbezeichnungen angeben.



Gruß
specci48
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo specci48,

wenn ich das richtig verstanden habe, müsste also das hier so funktionieren:

Command.New1("create table TechnolitInterneKontakte (R3 integer primary key autoincrement, Anrede, Vorname, Nachname, Funktion, GeschaeftsTelefon, GeschaeftsHandy, GeschaeftsTelefax, FreecallFax, GeschaeftsEMail1, ADMNR, Kategorie, Journal, PrivatAdresseStrasse, PrivatPLZ, PrivatOrt, PrivatTelefon, PrivatHandy, PrivatEMail2, Geburtstag, Notizen, R1, R2)", Connection.Value)

In dieser Tabelle wird in der Spalte "R3" der Primärschlüssel angelegt.

Dabei dürfte es egal sein, wo sich die Spalte "R3" befindet. Sie muß sich nicht am Anfang der Tabelle befinden, oder doch?

Bei meiner Tabelle jedenfalls wird nichts befüllt und es wird auch nichts angezeigt. Die Spalte "R3" befindet sich am Ende der Tabelle.

Oder muß ich die Tabelle umbauen, damit sich "R3" am Anfang der Tabelle befindet?

Wenn wir schon dabei sind: Wenn ich eine solche Tabelle wie oben habe, aber nur 4 Spalten in verschobener Reihenfolge anzeigen will, z.B.:

ADMNR, Nachname, Vorname, Geburtstag

... muß ich dann eine neue Tabelle (nur für die Anzeige) machen und dann wie befüllen?
 
Top