Autor Beitrag
Romy
Hält's aus hier
Beiträge: 8

Win XP
VB, Java, C#
BeitragVerfasst: Di 03.02.09 15:06 
Hallo an alle!

Wie deklariere ich am besten den String zu einer Datenbank, also so, dass ich nicht jedes Mal den kompletten Pfad angeben muss (für Excel und Access)?

Ist eine einfache Methode sinnvoll oder gibt es eine andere Möglichkeit, den Sting zB global zu deklarieren und im Programm aufzurufen?

Die Deklarierung sieht derzeit so bei mir aus:
Excel:
ausblenden C#-Quelltext
1:
2:
3:
strQuelle = @"D:\SCHULE HAK\Maturaprojekt\CH_Chemialiendatenbank1.0\CH_Chemialiendatenbank1.0\bin\Debug\Chemikalien.xls";
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
            + strQuelle + ";Extended Properties=Excel 8.0;";


Access:
ausblenden C#-Quelltext
1:
2:
strQuelle = "D:\\SCHULE HAK\\Maturaprojekt\\CH_Chemialiendatenbank1.0\\CH_Chemialiendatenbank1.0\\bin\\Debug\\Benutzer.mdb";
            cn = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Password=;data source=" + strQuelle;


Wer hat eine Idee, wie ich mein Problem am besten lösen kann?
Ich bin für jede Hilfe sehr dankbar!
Lg Romy
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 03.02.09 15:17 
Wegen dem Pfad: Kennst du Application.StartupPath? Das ist der aktuelle Pfad deiner Exe. ;-)

Und den konstanten Rest des Strings könntest du z.B. in einer Ressource speichern:
msdn.microsoft.com/d....resourcereader.aspx

In der Anwendung selbst wäre eine entsprechende Methode vermutlich die beste Lösung, globale Variablen in dem Sinn gibt es in C# nicht.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 03.02.09 18:16 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
In der Anwendung selbst wäre eine entsprechende Methode vermutlich die beste Lösung, globale Variablen in dem Sinn gibt es in C# nicht.
Wenn man den Ressourceneintrag in VS erstellt (standardmäßig gibts dafür Resources.resx), wird automatisch eine Klasse mit entsprechender Property erstellt :) .
Wenn der Pfad aber auf jeden Fall konstant bleibt, tut es auch ein public static readonly string, am Besten natürlich in einer Klasse, die etwas mit der DB-Anbindung zu tun hat (wofür dann hoffentlich auch privategenügt).

/edit: C# != Java...

_________________
>λ=
rzwanziger
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: Di 17.03.09 12:21 
Globale Variablen gibt es zwar nicht in C#, es gibt aber dennoch eine Lösung, in einer Windows-Forms-Anwendung aus allen Klassen heraus auf gemeinsame Variablen zuzugreifen.
Ich lege mir zu diesem Zweck immer eine statische Klasse "Global" an - Beispiel:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  public static class Global
  {
    public static string DBPATH = @"\Storage Card\mobile.db"//Pfad zur Datenbank
    public static string DBERROR = "";
    public static System.Drawing.Color COLOR_DISABLED = System.Drawing.Color.Orange;
    public static System.Data.SQLite.SQLiteConnection DBCONN = null;
    ....
  }


So kann ich, über Angabe des Präfix "Global." aus allen Modulen heraus auf meine globale Klasse zugreifen. DAs Ganze macht natürlich auch nur da Sinn, wo Variablen und Methoden wirklich auch global gebraucht werden.