Avatar billede lisby Nybegynder
17. juni 2003 - 14:03 Der er 4 kommentarer og
1 løsning

Databaseklasse som DLL

Jeg ønsker at lave min databaseklasse om til en DLL. Min klasse ser ud som nedenstående, men når jeg forsøger at lave en DLL-fil, får jeg fejlbesked omkring bl.a. OleDb.OleDbConnection og ConfigurationSettings. Kan jeg ikke lave det sådan at jeg ikke behøver lave en forekomst af klassen, men blot kan udføre metodekald direkte?
Jeg anvender VB.NET, er der nogen som kan forklare mig, hvad der er galt i nedenstående kode og hvordan koden ellers skal se ud?

Imports System
Imports System.Data

Namespace DAL
Public Class DB
    Public Function OpenConnection() As OleDb.OleDbConnection
        Dim DSN As String = ConfigurationSettings.AppSettings("dsn")
        Dim connStr As String
        connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DSN & ";"
        Dim connection As New OleDb.OleDbConnection(connStr)
        connection.Open()
        OpenConnection = connection
    End Function

    Public Function readContent(ByRef conn As OleDb.OleDbConnection, ByRef SQL As String) As OleDb.OleDbDataReader
        Dim command As New OleDb.OleDbCommand(SQL, conn)
        Return command.ExecuteReader
    End Function

    Public Sub execCommand(ByRef conn As OleDb.OleDbConnection, ByRef SQL As String)
        Dim command As New OleDb.OleDbCommand(SQL, conn)
        command.ExecuteNonQuery()
    End Sub
End Class
End Namespace
Avatar billede odegaard Nybegynder
17. juni 2003 - 14:14 #1
Hvilken fejlbesked får du? Hvordan compiler du?

Du kan kalde underklasserne ved deres fulde navn. Fx. System.Data.OleDb.OleDbConnection
Avatar billede odegaard Nybegynder
17. juni 2003 - 14:16 #2
Det er iøvrigt nok smart at importere OleDb klassen:
Imports System.Data.OleDb
Så slipper du for at skulle erklære flere sub-klasser som OleDb.OleDbConnection. Istedet kan du blot nøjes med OleDbConnection.
Fx. Dim command As New OleDbCommand(SQL, conn)
Avatar billede lisby Nybegynder
17. juni 2003 - 14:42 #3
-> odegaard
For at kompilere har jeg lavet en batch-fil, som sætter classpath op til vb compileren. For at kompilere skriver jeg:

vbc /out:DB.dll /t:library Database.vb

Dernæst får jeg følgende fejlbeskeder:

Namespace or type 'Data' for the imports 'System.Data' cannot be found.
Namespace or type 'OleDb' for the imports 'System.Data.OleDb' cannot be found.
(jeg har importeret System.Data.OleDb som du forslog)
Type 'OleDbConnection' is not defined.
Name 'ConfigurationSettings' is not declared.
og sådan fortsætter det med lignende fejlmeldinger alle øvrige steder, hvor Oledb er anvendt.
Avatar billede odegaard Nybegynder
17. juni 2003 - 15:12 #4
du skal angive overfor compileren at du ønsker at benytte nogle biblioteker.
Fx.
vbc.exe /t:library /out:DB.dll /r:Microsoft.VisualBasic.dll /r:System.dll /r:System.Data.dll DataBase.vb
Avatar billede lisby Nybegynder
17. juni 2003 - 15:54 #5
sådan! det var lige hvad jeg manglede. nu virker det perfekt. tak for hjælpen, odegaard!
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