Autor Beitrag
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3740
Erhaltene Danke: 762

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Sa 18.06.16 12:16 
Schau mal unter connectionstrings.com bzw. explizit unter SQL Server.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4262
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 18.06.16 13:03 
Du solltest nicht ODBC benutzen sondern die nativen Zugriffsklassen für den Sql Server.
Also nicht OdbcConnection sondern SqlConnection. Bei den anderen Datenzugriffsklassen genauso. Dort wo du gerade die Odbc... Variante verwendest nimm die Sql... Variante.

Wenn man Dispose manuell aufruft macht man meist was falsch. Gewöhne dir an wenn du schon merkst das man Dispose aufrufen sollte/kann einen using Block zuverwenden. Der ruft Dispose garnatiert auf und nicht nur wenn kein Fehler auftritt wie in deinem Code.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public static DataTable OpenQuery(string connectionString, string query)
{
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        con.Open(); 
        using (SqlDataAdapter da = new SqlDataAdapter(query, conn))
        {            
            da.Fill(dt );
        }
    }
    return dt;
}


Dein ConnectionString sieht nicht so falsch aus wenn man den auch Sql Server Zugriffkomponenten benutzt und nicht ODBC. Vermutlich heißt deine Datenbank aber nicht Northwind?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 03.07.16 17:06 
Okay. Also ich weiß nicht, ob ich es richtig verstanden habe. Ich habe hier (glaube ich) den SQL Server installiert. Nun muss ich für einen Freund ein Programm mit Login schreiben.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
private void button1_Click(object sender, EventArgs e)
        {
            string ConnectionString = "Server=" + "" + ";Database=myDataBase;Trusted_Connection=True;";
            string Query = "";
            OpenQuery(ConnectionString, Query);
        }

        public static DataTable OpenQuery(string connectionString, string query)
        {
            DataTable dt = new DataTable();
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();
                using (SqlDataAdapter da = new SqlDataAdapter(query, con))
                {
                    da.Fill(dt);
                }
            }
            return dt;
        }


Soo. Jetzt hätte ich folgende Idee: Ich liefere Ihm einfach die Datenbankdatei (.mdf) mit, und über einen OpenFileDialog kann er das nun öffnen (einmalig, beim ersten Programmstart). Den Pfad füge ich bei Server=... ein. In Visual Studio heißt die Datenbankdatei nun LoginDaten. Würde das dann nun so funktionieren?
Einloggen, um Attachments anzusehen!
_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4262
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 03.07.16 20:53 
Kommt ein wenig auf die Variante des Sql Servers an die du benutzt. Üblicherweise braucht man dafür dann eine AttachDbFilename Parameter im ConnectionString.

Richtiger wäre aber bei einer Datenbank die dafür vorgesehen Backup/Restore Mechanismen zu verwenden. Nebenbei musst du dann eh einen Backup/Restore Mechanisus in deiner Anwendung einbauen der sich für Zwischendurch eh gut macht (wenn man nicht davon ausgehen kann das der Benutzer eine professionelle Backupsoftware benutzt oder selbst als Admin Hand an den Sql Server anlegen will) und nicht nur um am Anfang zu Initialisierung ein initiales Backup per Restore einzuspielen.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 03.07.16 21:23 
Das Thema Datenbanken wird ja von Post zu Post immer komplizierter. Trotzdem möchte ich es erlernen. Was ist nun der Unterschied zwischen einem normalen Pfad und einem AttachDbFilename? Als Server verwende ich den 2012 SQL Server, glaube ich. Wozu brauche ich nun die Backup Mechanismen? Ich kann ja auch einen Algorithmus schreiben, der die Datenbankdatei auf einen externen Datenträger kopiert, oder?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4262
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 03.07.16 21:38 
Zitat:
Ich kann ja auch einen Algorithmus schreiben, der die Datenbankdatei auf einen externen Datenträger kopiert, oder?


Kannst du aber warum nicht das Benutzen was schon da ist und (erprobt) funktioniert? Backup/Restore ist ein Standardverfahren und ja in deinem speziellen Fall mag es unnötig sein aber Backup/Restore ist was was bei jedem DB System in irgendeiner Form existiert und auch in fast jede Größenordnung skaliert. Backup/Restore kannst du z.B auch benutzen wenn das System läuft (unterbrechungsfrei). Auf solche Backups kannst du Transaktionlogs anwenden um im Zweifel sekundengenau eine Datenbank wiederherstellen (Wenn du weißt ein Problem war um 12:01 kannst du die Datenbank genau zum Zeitpunkt 12:00 Uhr wieder herstellen). Backup/Restore löst viele Problem die du möglicherweise nicht hast, glaubst nicht zu haben oder noch nicht siehst.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20213
Erhaltene Danke: 2034

Win 10
C# (VS 2017)
BeitragVerfasst: So 03.07.16 21:49 
Hallo,

ich mache dieses Thema jetzt mal zu.

Vorweg, @Csharp-programmierer: Das heißt ausdrücklich nicht dass Du dazu nicht mehr fragen sollst oder darfst, ganz im Gegenteil!

Aber:

Dieses Thema entwickelt sich in die Richtung "Alles, was zu Datenbanken mal gesagt werden sollte". Das ist weder für Dich, Csharp-programmierer, sinnvoll noch für irgendwen, der hinterher ein Problem lösen möchte und dieses Topic liest.

Daher stelle bitte konkrete Fragen und am besten angefangen bei den Grundlagen. Pro Topic eine Frage mit hoffentlich lernstands-gerechten Antworten. *mit dem Zaunpfahl winkt*
Das dürfte hier alle irgendwie weiter bringen als ein Sammelsurium, in dem sich niemand mehr zurecht findet ;)

Viele Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.