Archief - [PROG][VB.NET] Opvragen van de uuid bij een insert

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

-=Apollo=-

Legacy Member
Hallo allemaal,

ik ben momenteel bezig met een klein projecten in ASP.Net. Ik maak in de website verbinding met een Access databank.
Voor het overzichtelijk te houden heb ik gebruik gemaakt van 'unique indentifiers' om telkens een uniek nummer te hebben voor gebruikers en dergelijke. Er worden dus nummers gemaakt als deze: {712f3d4e-a853-4708-8225-81a24b24d1f3}

Nu probeer ik via een formulier nieuwe gebruikers toe te voegen, maar het insert commando lukt niet. Er zijn blijkbaar problemen met het oproepen van de juist gegenereerde ID. Die ID wordt namelijk automatisch aangemaakt in Access. Nu probeer ik die op te roepen in mijn ASP.Net pagina zodat ik een goede insert kan doorvoeren.

in mijn vb code heb ik dit als volgt aangepakt:

Code:
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.OleDb

Public Class n_unique_identifier
    Public Shared Function get_uuid(ByVal connection_string As String) As Guid

        
        Dim new_uuid As Guid

        Dim Zeus As OleDbConnection
        Dim ConnectionStringAccess As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\Inetpub\wwwroot\Zeus\Database\Zeus.mdb"

        Zeus = New OleDbConnection(ConnectionStringAccess)

        Dim MySQL As String = "SELECT newid() AS new_uuid "

        Dim cmd As OleDbCommand = New OleDbCommand(MySQL, Zeus)

        'open connection
        cmd.Connection.Open()

        Dim dr_sql As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

        If dr_sql.Read Then
            new_uuid = dr_sql.GetValue(0)
        End If

        'close the connection
        cmd.Connection.Close()

        Return new_uuid
    End Function
End Class

Eerst dacht ik dat er misschien iets fout is omtrent "newid()" die wordt opgeroepen in de select!

Hopelijk kunnen jullie me een handje helpen!!

Alvast bedankt!

Da Turtle

Legacy Member
Ik heb geen ervaring met global unique identifiers, maar er is een speciaal veldtype in access om een rij uniek te definieren, namelijk Autonummering. Als je autonummering gebruikt moet je tijdens de insert geen waarde voor dit veld meegeven, access kiest zelf een nummer die nog niet voorkomt in de tabel.
Voorbeeldje (kolom1 is van type autonummering):
INSERT INTO mijntabel (kolom2, kolom3) VALUES (waardekolom2, waardekolom3)

Ik vermoed dat dit eventueel bij GUID's ook zo kan zijn, je zegt zelf dat ze automatisch aangemaakt worden in Access. Van welk type is dit veld, en hoe doe je de insert?

// OT: Access is niet echt een veel gebruikte database voor web applicaties, het kan niet zo goed omgaan met meerdere gebruikers tegelijk (wat meestal wel ooit het geval is bij een web applicatie)

Rajiv

Legacy Member
In SQLServer moet dit ook wel lukken
Is een betere dbms voor webapplicaties
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan