Hallo,
es gibt ein Problem wo mir zum lösen ein kleiner Denkanstoss fehlt.
Ich habe eine Software die bis jetzt mit SQLCE problelos arbeitet. Nun wollte ich das Programm so erweitern, das ich auswählen kann ob ich SQLCE oder Mysql/MariaDB (damit es netzwerkfähig wird) nutzen kann.
Ich kann problemlos auf beide DB's zugreifen. Ich deklariere meine Variablen folgendermaßen für den DB-Zugriff:
So klappts mit sqlce ohne Probleme.
Jetzt muss ich vorher abfragen ob MySQl oder SQLCE.
Was bei der Deklaration nicht funktioniert ist:
Ist ja auch logisch.
Was aber auch nicht geht ist die Variable(n) "con" als public zu deklarieren und dann später als MySql.Data.MySqlClient.MySqlConnection oder System.Data.SqlServerCe.SqlCeConnection zuzuweisen.
Mir geht es darum, wie ich am einfachsten meinen Code umstellen kann, um entweder den mysqlserver oder sqlce anzusprechen.Dabei möchte ich gerne meine bisherige Struktur erhalten und eigentlich am liebsten nur die Variablen ändern(da sie ja überall so drinnstehen). Irgendwie steh ich grad aufm Schlauch.
es gibt ein Problem wo mir zum lösen ein kleiner Denkanstoss fehlt.
Ich habe eine Software die bis jetzt mit SQLCE problelos arbeitet. Nun wollte ich das Programm so erweitern, das ich auswählen kann ob ich SQLCE oder Mysql/MariaDB (damit es netzwerkfähig wird) nutzen kann.
Ich kann problemlos auf beide DB's zugreifen. Ich deklariere meine Variablen folgendermaßen für den DB-Zugriff:
Quellcode
-
- Dim dbfile As String
- Dim sAppPath As String
- Dim reader As SqlServerCe.SqlCeDataReader
- sAppPath = IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location)
- If Not sAppPath.EndsWith("\") Then sAppPath = sAppPath & "\"
- dbfile = sAppPath & "db.sdf"
- Dim con As New System.Data.SqlServerCe.SqlCeConnection
- Dim cmd As New SqlCeCommand
- Dim gesp as integer=0
- 'etwas auslesen...
- Try
- con = New SqlCeConnection("Data Source=" & dbfile & " ; Database Password='123'")
- cmd.CommandText = "select anzahl from einstellungen"
- con.Open()
- cmd = New SqlCeCommand(cmd.CommandText, con)
- reader = cmd.ExecuteReader()
- Do While reader.Read()
- If Not IsDBNull(reader("anzahl")) Then
- gesp = CInt(reader("anzahl"))
- End If
- Loop
- reader.Close()
- con.Close()
- Catch ex As Exception
- con.close()
- MsgBox(ex.Message)
- End Try
- 'fertig
So klappts mit sqlce ohne Probleme.
Jetzt muss ich vorher abfragen ob MySQl oder SQLCE.
Was bei der Deklaration nicht funktioniert ist:
Quellcode
-
- if datenbank="ce" then
- Dim con As New System.Data.SqlServerCe.SqlCeConnection
- Dim cmd As New SqlCeCommand
- Dim reader As SqlServerCe.SqlCeDataReader
- else
- Dim con As New MySql.Data.MySqlClient.MySqlConnection
- Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
- Dim reader As MySql.Data.MySqlClient.MySqlDataReader
- end if
Ist ja auch logisch.
Was aber auch nicht geht ist die Variable(n) "con" als public zu deklarieren und dann später als MySql.Data.MySqlClient.MySqlConnection oder System.Data.SqlServerCe.SqlCeConnection zuzuweisen.
Mir geht es darum, wie ich am einfachsten meinen Code umstellen kann, um entweder den mysqlserver oder sqlce anzusprechen.Dabei möchte ich gerne meine bisherige Struktur erhalten und eigentlich am liebsten nur die Variablen ändern(da sie ja überall so drinnstehen). Irgendwie steh ich grad aufm Schlauch.