Avatar billede jesperthomsen1980 Nybegynder
18. januar 2005 - 15:41 Der er 11 kommentarer og
1 løsning

Adgang til access database - informationssøgning

Hej eksperter.

Jeg skal i gang med at lave et forholdsvis simpel (hermed menes system uden alle unødige detaljer), og jeg mangler noget information om hvorledes man opretter en forbindelse til en access database.
Jeg er uddannet datamatikker, men programmeringen har hovedsageligt forgået i Java, og nu vil jeg prøve VB.Net i stedet.
Jeg har derfor været på biblioteket for at finde materiale om VB.Net, men har desværre ikke været i stand til at finde noget om databaseadgang. Derfor vil det være rart hvis nogen ligger inde, eller ved hvor det kan hentes, med nogle eksempler på simpel databaseadgang. Altså hvor opdaterings SQL sætninger bliver udført i VB.net kode.
Hvor kan jeg finde det?

Håber nogen kan hjælpe - På forhånd tak

VH Jesper
Avatar billede arne_v Ekspert
18. januar 2005 - 15:44 #1
Du skal have lavet en OleDbConnection.

Jeg smider lige et par tilfældige eksempler jeg har på lager.
Avatar billede arne_v Ekspert
18. januar 2005 - 15:44 #2
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
Avatar billede arne_v Ekspert
18. januar 2005 - 15:44 #3
Imports System
Imports System.IO
Imports System.Data
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 cre As OleDbCommand = New OleDbCommand ("CREATE TABLE imgtest (id INTEGER PRIMARY KEY,img OLEObject)", con)
        cre.ExecuteNonQuery
        Dim imgfile As Stream = New FileStream ("C:\blue.jpg", FileMode.Open)
        Dim siz As Integer = imgfile.Length
        Dim imgdata(siz-1) As Byte
        imgfile.Read(imgdata, 0, imgdata.Length)
        imgfile.Close
        Dim ins As OleDbCommand = New OleDbCommand ("INSERT INTO imgtest VALUES(@id,@img)", con)
        ins.Parameters.Add("@id", OleDbType.Integer)
        ins.Parameters.Add("@img", OleDbType.VarBinary)
        ins.Parameters("@id").Value = 1
        ins.Parameters("@img").Value = imgdata
        ins.ExecuteNonQuery
        Dim sel As OleDbCommand = New OleDbCommand ("SELECT img FROM imgtest WHERE id = @id", con)
        sel.Parameters.Add("@id", OleDbType.Integer)
        sel.Parameters("@id").Value = 1
        Dim imgdata2 As Byte() = CType(sel.ExecuteScalar, Byte())
        Dim drp As OleDbCommand = New OleDbCommand ("DROP TABLE imgtest", con)
        drp.ExecuteNonQuery
        Dim imgfile2 As Stream = New FileStream ("C:\blue2.jpg", FileMode.Create)
        imgfile2.Write(imgdata2, 0, imgdata2.Length)
        imgfile2.Close
        con.Close
    End Sub
End Class
Avatar billede jesperthomsen1980 Nybegynder
18. januar 2005 - 15:45 #4
Lyder rigtigt godt
Skriver man kode selv eller får man Visual Basic til at generere det? Hvad er nemmest?
Avatar billede arne_v Ekspert
18. januar 2005 - 15:45 #5
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing
Imports System.Windows.Forms

Namespace DefaultNamespace
    Public Class MainForm
        Inherits Form
        Private dg As DataGrid
        Private save As Button
        Private con As OleDbConnection
        Private da As OleDbDataAdapter
        Private cb As OleDbCommandBuilder
        Private ds As DataSet

        Public Shared Sub Main
            Dim fMainForm As New MainForm
            fMainForm.ShowDialog()
        End Sub

        Public Sub New()
            MyBase.New
            Me.InitializeComponent
        End Sub

        Private Sub InitializeComponent()
            con = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;UserId=admin;Password=")
            con.Open
            da = New OleDbDataAdapter("SELECT * FROM T1", con)
            cb = New OleDbCommandBuilder(da)
            da.UpdateCommand = cb.GetUpdateCommand
            ds = New DataSet
            da.Fill(ds, "T1")
            dg = New DataGrid
            save = New Button
            SuspendLayout
            dg.Location = New Point(50, 50)
            dg.Size = New Size(300, 200)
            dg.SetDataBinding(ds, "T1")
            save.Location = New Point (50, 300)
            save.Size = New Size (100, 25)
            save.Text = "Save"
            AddHandler save.Click, AddressOf SaveClick
            ClientSize = New Size(400, 400)
            Controls.Add(dg)
            Controls.Add(save)
            Text = "Main Form"
            ResumeLayout(false)
        End Sub
       
        Sub SaveClick(ByVal sender As Object, ByVal e As EventArgs)
            da.Update(ds, "T1")
            ds.AcceptChanges
            dg.Refresh
        End Sub
    End Class
End Namespace
Avatar billede arne_v Ekspert
18. januar 2005 - 15:46 #6
Du kan godt få din IDE til at generere noget kode.

Men jeg er så gammeldags at jeg foretrækker at skrive min kode selv.
Avatar billede jesperthomsen1980 Nybegynder
18. januar 2005 - 15:47 #7
ok - det vil jeg lige prøve så - vender lige tilbage hvis det giver problemer - tak for nu i hvert fald...
Avatar billede arne_v Ekspert
18. januar 2005 - 15:48 #8
eksempel 1 og 2 ligner JDBC meget (eksempel 2 parameters svarer til JDBC
prepared statement).

eksempel 3 viser en enkelt af mulighederne i .NET for at integerere
GUI og database.
Avatar billede jesperthomsen1980 Nybegynder
18. januar 2005 - 15:52 #9
Ved du hvilke tabeller der er i Test.db? - Lige for at køre det engang...
Avatar billede arne_v Ekspert
18. januar 2005 - 15:55 #10
Det er min kode og min database, så det ved jeg !

Tabel T1 har 2 felter F1 og F2 som er henholdsvis Long og Text (i Access termer - i
generel SQL er de INTEGER og VARCHAR(50)).

Og eksmepel 2 opretter selv tabel (og sletter den igen efter brug).
Avatar billede jesperthomsen1980 Nybegynder
18. januar 2005 - 15:58 #11
ok takker - det var lige hvad jeg ledte efter - nu er der noget at gå igang med...

Jeg siger mange tak for hjælpen og takker for den hurtigere respons...
Gider du ikke lige smide et svar - du har fuldt fortjent pointene...
Avatar billede arne_v Ekspert
18. januar 2005 - 16:00 #12
svar
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