skriver något annat här då...
jo har sökt lite på forumet efter "db wrapper" men hittar inget. Vet att det finns! gahh!
12 svar · 379 visningar · startad av P
Vad är skilladen på dessa?
Hittade detta:
Private – callable only by code within our class
Friend – callable only by code within our project/component
Public – callable by code outside our class
Protected – new to VB.NET; we’ll discuss this later when we cover inheritance
Protected Friend – callable only by code within our project/component and by code in our subclasses; we’ll discuss this later when we cover inheritance
skriver något annat här då...
jo har sökt lite på forumet efter "db wrapper" men hittar inget. Vet att det finns! gahh!
Private - Kan endast anropas innifrån den klassen den ligger i.
Friend - Kan anropas från hela ditt projekt
Public - Kan anropas från kod utanför (och i) din klass. Kan även anropas via COM+ etc.
Protected - Denna funktion kan endast kommas åt via arv. Dvs. har du en bas-klass med en metod som är Protected kan du endast komma åt metoden genom att först ärva bas-klassen.
Protected Friend - Samma som ovan dock kan hela ditt projekt även anropa den som "vanlig"
Exempel
**********************************
Public
Public Class News
Public sub GetNews()
End Sub
End Class
------------
Annan klass
dim oNews as new News
oNews.GetData
----------
Från .aspx
dim oNews as new News
oNews.GetNew()
***************************
Friend
Public Class News
Friend sub GetNews()
End Sub
End Class
------------
Annan klass
dim oNews as new News
oNews.GetData
----------
Från .aspx
Går inte då denna är friend och inte synlig för omvärlden
********************************
Private
Public Class News
Private sub GetNews()
End Sub
End Class
------------
Annan klass
Går inte då denna endast är synlig för samma klass
----------
Från .aspx
Går inte då denna är Private och endast synlig för den egna klassen
*****************************
Protected
Public Class News
Protected sub GetNews()
End Sub
End Class
------------
Annan klass - ARV
Inherits News
GetNews()
Fungerar!!!!
----------
Annan klass INSTANS
Dim oNews as New News
oNEws.GetData
Fungerar EJ då sub endast är "synlig" via arv
---------------
Från .aspx
Går inte då denna endast är synlig via arv
******************************
Protected Friend
Public Class News
Protected Friend sub GetNews()
End Sub
End Class
------------
Annan klass - ARV
Inherits News
GetNews()
Fungerar!!!!
----------
Annan klass INSTANS
Dim oNews as New News
oNEws.GetData
Fungerar !!!!
---------------
Från .aspx
Går inte då denna endast är synlig via arv eller för det egna projektet.
Tack för en underbar genomgång h0ger. Jag har dock problem med denna kodsnutt:
Ligger i en class med strCnnType definerat till public utanför.
Function RunNonQuery(SqlStatement As String)
Select Case strCnnType
Case "Mssql"
Dim cmdSqlCommand As New SqlCommand()
Case "Mysql"
Dim cmdSqlCommand As New OdbcCommand()
Case "Access"
Dim cmdSqlCommand As New OleDBCommand()
End Select
Try
objCnn.Open()
cmdSqlCommand = CreateCommand(SqlStatement)
cmdSqlCommand.ExecuteNonQuery()
Catch Exp As SqlException
throw(Exp)
Finally
objCnn.Close()
End Try
End Function
Få felmeddelande vid kompilering att cmdSqlCommand inte är deklarerad :l Kan man inte deklarera på detta sätt?
P skrev:
Tack för en underbar genomgång h0ger. Jag har dock problem med denna kodsnutt:
Ligger i en class med strCnnType definerat till public utanför.Function RunNonQuery(SqlStatement As String) Select Case strCnnType Case "Mssql" Dim cmdSqlCommand As New SqlCommand() Case "Mysql" Dim cmdSqlCommand As New OdbcCommand() Case "Access" Dim cmdSqlCommand As New OleDBCommand() End Select Try objCnn.Open() cmdSqlCommand = CreateCommand(SqlStatement) cmdSqlCommand.ExecuteNonQuery() Catch Exp As SqlException throw(Exp) Finally objCnn.Close() End Try End FunctionFå felmeddelande vid kompilering att cmdSqlCommand inte är deklarerad :l Kan man inte deklarera på detta sätt?
Testa att declerara den med en form av basclass, alla connection classer implanterar System.Data.IDbConnection. Testa att deklarera cmdSqlCommand som IDbConnection. Har för mig att man ska kunna göra om inte så på ett liknande sätt.
gäller samma sak i en if/else sats? Eller kan man använda någon annan form av variabel-deklaration för att få dem publika i "funktionen". Har för mig att detta har disskuterats tidigare men jag hittar inget...
Det gäller samma för if/else.
Kan du inte göra en fuling och deklarera objSqlStatement som object på funktionsnivå och sedan tilldela den "rätt" objecttyp i select case?
Typ
dim cmdSqlCommand as Object
select case
case 1
cmdSqlCommand = New SqlCommand
case 2
cmdSqlCommand = New OdbcCommand
end select
Vet inte om detta funkar.
Problemet är att du inte kan deklarera cmdSqlCommand som publik i funktionen då du har tre likadana deklarationer.
Vet inte om du kan skapa en cmdSqlCommand property som du sedan överlagrar med korrekt typ. Kan vara värt ett försök.
jepp, variabeln måste deklareras utanför .
testa denna:
[b]Private cmdSqlComamnd As IDbCommand[/b]
Function RunNonQuery(SqlStatement As String)
Select Case strCnnType
Case "Mssql"
cmdSqlCommand = New SqlCommand()
Case "Mysql"
cmdSqlCommand = New OdbcCommand()
Case "Access"
cmdSqlCommand = New OleDBCommand()
Case Else
'## -- throw some errors --
End Select
Try
objCnn.Open()
cmdSqlCommand = CreateCommand(SqlStatement)
cmdSqlCommand.ExecuteNonQuery()
Catch Exp As SqlException
throw(Exp)
Finally
objCnn.Close()
End Try
som sagt, koden e otestad
cya,
PatrikB
Tack!
IdbCommand är ett Interface som är implementerat i alla Dbclasser såsom OleDbCommand, SqlCommand, OdbcCommand, MySqlCommand etc .....
Finns även interface för Connection, IDbConnection etc....
Kika i SDKn .... där förklaras det bättre ... ;)
cya,
PatrikB
Ah ok. Det är dags att RTFM för min del
... tycker att det är det enda jag gör ... :e ... för minsta grej man vill åstadkomma ... men, förhoppningsvis lossnar det snart ;)
cya,
PatrikB