Avatar billede taub Nybegynder
19. juli 2004 - 18:23 Der er 9 kommentarer og
1 løsning

Skrive til Access

Hey

Hvordan skriver jeg til en Access db med VB.NET?
Er der evt. flere måder at gøre det på?
Avatar billede avlund Nybegynder
19. juli 2004 - 18:26 #1
I store træk: opret en OleDbConnection, så med denne en OleDbCommand, og kør executeNonQuery()-metoden på denne kommando med din SQL-streng som parameter.
Avatar billede jamiros Novice
19. juli 2004 - 18:27 #2
Ved ikke om det kan bruges, men faldt lige over lidt om access conn.

http://azero.dk/support/database/access/
Avatar billede avlund Nybegynder
19. juli 2004 - 18:33 #3
Jamiros... det der er til ASP.
Avatar billede taub Nybegynder
19. juli 2004 - 18:36 #4
jamiros: Tak, men det er lidt for ASP.OLD ;) Jeg håber på at lave noget der er mere optimal til .NET...

avlund: Jeg tror jeg har prøvet noget i den retning du siger... Men jeg kan ikke lige få det til at virke... Du kan da lige få koden ;)

Dim strConn As String = ConfigurationSettings.AppSettings("DB:Provider")
            strConn += "Data Source=" & HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings("StatsDB:Path"))
            Dim strSQL As String = "SELECT * FROM HitCount"

            Dim objConn As New OleDbConnection(strConn)
            Dim objCmd As New OleDbCommand(strSQL, objConn)
            Dim objDa As OleDbDataAdapter = New OleDbDataAdapter(strSQL, strConn)

            Dim ds As DataSet = New DataSet
            objDa.Fill(ds, "HitCount")

            Dim dr As DataRow
            dr = ds.Tables("HitCount").NewRow
            dr.Item("Date") = Date.Now.ToShortDateString
            dr.Item("UserIP") = "1"
            dr.Item("UserAgent") = "ting"
            ds.Tables("HitCount").Rows.Add(dr)

            Dim objCb As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(objDa)
            objDa.Update(ds, "HitCount")

            objConn.Close()

Jeg får:
Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.

Koden fandt jeg på et website...
Avatar billede avlund Nybegynder
19. juli 2004 - 18:38 #5
Flg. eksempel er i C# - jeg er ikke VB-koder - men da det stort set kun bruger .NET-API'et, skulle du ikke have de store problemer med at "konvertere" det:

String connString = "[DIN CONNECTIONSTRING HER] - se evt. www.connectionstring.com "
String SQL = "INSERT INTO tabel (navn) VALUES ( 'Werner' )";
OleDbConnection conn = new OleDbConnection( connString );
OleDbCommand comm = new OleDbCommand( SQL, conn );
comm.ExecuteNonQuery();
comm.Close();
conn.Close();
Avatar billede avlund Nybegynder
19. juli 2004 - 18:41 #6
OK, har lige set på din kode nu. Det er ofte overkill at bruge et DataSet, Commands er hurtigere til enkelte forespørgsler og kommandoer.

Hvordan finder din DataRow ud af, hvilken type de forskellige Items er? De er jo allesammen strings her.
Avatar billede jamiros Novice
19. juli 2004 - 18:44 #7
min fejl.... :-)
Avatar billede jamiros Novice
19. juli 2004 - 18:46 #8
Avatar billede taub Nybegynder
19. juli 2004 - 18:52 #9
Nu virker det... Min kode kom til at se sådan ud:

Dim strConn As String = Connectionstring...
Dim strSQL As String = "INSERT INTO HitCount (UserIP) VALUES ('Werner')"

Dim objConn As New OleDbConnection(strConn)
Dim objCmd As New OleDbCommand(strSQL, objConn)
objConn.Open()
objCmd.ExecuteNonQuery()
objConn.Close()

Tak for hjælpen begge to.
Avatar billede avlund Nybegynder
19. juli 2004 - 18:58 #10
You're welcome - det ser også ud til at være meget renere kode.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester