Avatar billede tubber Juniormester
10. april 2012 - 11:11 Der er 13 kommentarer og
1 løsning

SQL Connection til ACCESS

Jeg har følgende:

    Dim con As OleDb.OleDbConnection
    Dim SQL As New OleDb.OleDbCommand
    Dim rs As New OleDb.OleDbDataAdapter
    Dim dbMyDog As String = Application.StartupPath() & "\db.accdb"
    Dim strConnect As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & db & ";Persist Security Info=False;"


Og i en handling skal jeg sætte nogle tekst felter = et rs

        con = New OleDb.OleDbConnection(strConnect)

        Call con.Open()
        'Her skal der så gerne være noget der sætter tekstfeltet


        Call con.Close()

Nu er jeg lidt ny i .NET, men vil gerne ha noget der ligner det fra vb6 altså:
text.text = rs!colonnenavn

Nogen der lige kan hjælpe på vej her ?

Og lige et side spg. er det smart at bruge MS ACE ODBC eller er der et bedre valg ?
Avatar billede arne_v Ekspert
10. april 2012 - 16:16 #1
Nyere MS Access => brug ACE
Avatar billede tubber Juniormester
10. april 2012 - 17:39 #2
Kunne det være hensigtsmæssigt at bruge ADODB i stedet for ACE ?
Avatar billede arne_v Ekspert
10. april 2012 - 18:09 #3
????

ADO er database teknologi i COM og har en del komponenter med ADODB i navnet

ADO.NET er database teknologien i .NET

OLE DB er ca. det samme som ADO

ADO.NET har support for aeldre teknologier baade OLE DB og ODBC

Nye MS Access OLE DB providere starter med:
  Microsoft.ACE.OLEDB

Gamle MS Access OLE DB providere starter med:
  Microsoft.Jet.OLEDB

ODBC er endnu aeldre end OLE DB
Avatar billede tubber Juniormester
10. april 2012 - 19:24 #4
Har set det her i VB.Net - ved bare ikke hvordan det kan bruges

Dim cn As New ADODB.Connection()

Og også stadig på rimeligt bar bund mht.

Og i en handling skal jeg sætte nogle tekst felter = et rs

        con = New OleDb.OleDbConnection(strConnect)

        Call con.Open()
        'Her skal der så gerne være noget der sætter tekstfeltet


        Call con.Close()

Nu er jeg lidt ny i .NET, men vil gerne ha noget der ligner det fra vb6 altså:
text.text = rs!colonnenavn
Avatar billede arne_v Ekspert
10. april 2012 - 19:28 #5
Dim cn As New ADODB.Connection()

laver en instans af COM komponenten ADODB.Connection (.NET kan automatisk wrapper COM objekter).

Jeg vil kraftigt fraraade at bruge dette.
Avatar billede arne_v Ekspert
10. april 2012 - 19:31 #6
Lad mig lige proeve at poste et par eksempler!


Imports System
Imports System.Data.OleDb

Class MainClass
    Public Shared Sub Main(ByVal args As String())
        Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=")
        con.Open
        Dim cmd As OleDbCommand = New OleDbCommand ("SELECT * FROM T1", con)
        Dim rdr As OleDbDataReader = cmd.ExecuteReader
        While rdr.Read
            Dim f1 As Integer = CType(rdr(0), Integer)
            Dim f2 As String = CType(rdr(1), String)
            Console.WriteLine(f1 & " " & f2)
        End While
        con.Close
    End Sub
End Class



Imports System
Imports System.Data.OleDb

Class MainClass
    Public Shared Sub Main(ByVal args As String())
        Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb")
        con.Open
        Dim cmd As OleDbCommand = New OleDbCommand("SELECT COUNT(*) FROM T1", con)
        Dim n As Integer = cmd.ExecuteScalar
        Console.WriteLine(n)
        con.Close
    End Sub
End Class
Avatar billede tubber Juniormester
11. april 2012 - 00:21 #7
Du bruger reader istedet for dataadapter ?

Den er kun til at læse med ik ?
Hvis jeg skal skrive til DB er det dataadapter ?
Avatar billede arne_v Ekspert
11. april 2012 - 00:28 #8
Du kan bruge DataSet og DataAdapter til at baade laese og opdatere med.

Du kan bruge en Command med INSERT eller UPDATE til at opdatere med.
Avatar billede tubber Juniormester
11. april 2012 - 00:39 #9
Nu sidder jeg og forsøger mig med første eksempel, men får en
A first chance exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

Og ingen output nogen steder :/
Avatar billede tubber Juniormester
11. april 2012 - 00:45 #10
Fandt ud af det :) mange tak for hjælpen :)

Det er Access 2007 så skiftede den til ace og så virkede det

Der hvor der står

CType(rdr(0), integer)

Det er kolonne 0 ?
Og kan jeg bruge kolonne navn i stedet, f.eks.
CType(rdr("rsNavn"), string)
Avatar billede tubber Juniormester
11. april 2012 - 00:45 #11
og lige læg et svar :)
Avatar billede arne_v Ekspert
11. april 2012 - 00:50 #12
Du burde kunne bruge kolonne navn.
Avatar billede arne_v Ekspert
11. april 2012 - 00:50 #13
og svar
Avatar billede tubber Juniormester
11. april 2012 - 00:53 #14
kan man - så nu skal jeg så bare lige have skrevet det om, og givet de navne jeg normalt bruger :)

Nu har jeg noget at arbejde med, det er fanme til at blive frustret over når man nu bare kunne installere vb6 og så var der ingen problemer :P

Og jeg er ikke engang kommet til det kringlede endnu hehehe men så vender jeg tilbage i et nyt spg :)

Takker mange gange for hjælpen
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
Kurser inden for grundlæggende programmering

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