Vad är motsvarande för "mysql_insert_id() " i Visual Studio 2005? Då har du nog gjort fel, jag har lyckats med det. Så frågan är hur du gör? Du ska alltså exekvera frågan "SELECT LAST_INSERT_ID();" för att få reda på detta. Är inte det där C kod? VB använder inte ";". Är det @@IDENTITY du far efter? Sök i forumet så får du massor med svar. Så här gör jag en insert kommando i Visual Studio 2008 (som är det miljö jag arbetar med och vill ha hjälp i): [citerat Yaser Mosavi Medlem:25825 [autoincrementering]#268401] Jag borde ha beskrivit mitt problem mer grundligt. <b>Jag arbetar genom ODBC, och jag har hittils trott att det gör det irrelevant vilken databas jag arbetar mot, att ODBC tar itu med skillnaden genom sina olika drivers, dvs att jag enbart behöver få det att fungera mot odbc i den miljö jag arbetar i. Har jag fel? Om ja, vad är då poängen med ODBC?</b> [citerat Johan Djupmarker Medlem:28 [autoincrementering]#268411]autoincrementering
jag googlade mig till det här
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
men det hjälper mig inte, jag behöver kunna göra det i vb. Jag använder en ODBC kopling.
Tack.Sv: autoincrementering
/JohanSv:autoincrementering
Jag skulle uppskata om någon kunde skriva en väldig kort metod på tre fyra rader som använder SELECT LAST_INSERT_ID eller vb motsvarigheten :)Sv: autoincrementering
Skriv gärna vilken databas du använder så är det lättare att ge dig rätt svar.Sv:autoincrementering
Dim vConnectionString As String = "Insert into ..."
oCommand.CommandText = vConnectionString
oConnection.Open()
oCommand.ExecuteNonQuery()
oConnection.Close()
Så hur gör jag för att fånga vilken autoincrement det fick?
Som sagt, jag kopplar mig via ODBC.Sv: autoincrementering
<citat>
(som är det miljö jag arbetar med och vill ha hjälp i)
</citat>
Du arbetar <b>mot en databas</b>. Visual Studio är ingen databas. Vi vill veta vilken databas du använder.Sv:autoincrementering
Jag arbetar genom ODBC, och jag har hittils trott att det gör det irrelevant vilken databas jag arbetar mot, att ODBC tar itu med skillnaden genom sina olika drivers, dvs att jag enbart behöver få det att fungera mot odbc i den miljö jag arbetar i. Har jag fel? Om ja, vad är då poängen med ODBC?
aplicationen jag bygger kommer att användas mot en rad olika databaser av okänd typ.
Jag är väldig oerfaren och har enbart lärt mig använda insert, update, delete och select kommandon.
jag hade problemet att när jag insertade in i en tabel med autoincrementering så ville jag veta vilken nummer som posten blev tilldelad. Jag sökte lite och fann att det fanns en funktion som gjorde detta. Men jag kunde inte hitta någon exempel på hur syntaxen för att använda detta såg ut i VB 2008, så då tänkte jag att jag testar att ställa frågan i ett forum.
Jag kunde enbart namnet på funktionen i ett SQL, men som sagt, jag behöver veta hur jag ska skriva det rent specifikt i VB 2008.Sv: autoincrementering
Vad jag känner till så finns det inget stöd för det i ODBC utan du får nog fråga databasen direkt.
<b>aplicationen jag bygger kommer att användas mot en rad olika databaser av okänd typ.</b>
Där har du nog ett problem...
MySQL och Microsoft databaser ger dej lösningen med SQL-frågan "SELECT @@IDENTITY", men jag är ganska tveksam till att "alla andra" hanterar den frågan. En riktig fuling är att göra "SELECT MAX(fält) FROM tabell" för att få högsta id, men det finns ju alltid en lite risk att någon annan hinner emellan och att du därför får fel nummer.
/JohanSv:autoincrementering
<citat>
En riktig fuling är att göra "SELECT MAX(fält) FROM tabell" för att få högsta id, men det finns ju alltid en lite risk att någon annan hinner emellan och att du därför får fel nummer.
</citat>
Då är det bättre att se till att databasen har id-fältet som primary key, och först hämta värdet;
ok = false
do while not ok
id = sql("SELECT MAX(ID) FROM tbl")
ok = sql("INSERT INTO tbl(ID, ...) VALUES(?, ...)", id+1, ...)
loop
Då smäller det vid insättning, men de stora problemen kommer vid väldigt många anslutningar samtidigt. Detta borde fungera oavsett motor, så länge databasen vägrar sätta in flera med samma id?