2017-08-28 15 views
1

Der folgende Code wird von mir verwendet, um einen Satz von Elementen in der sqlite-Datenbank in eine Datagrid-Ansicht nach einem Klick zu laden! Wenn der Pfad zur Datenbank wie im Code angegeben ist, wird die Datenbank erfolgreich verbunden und Daten werden geladen.C# Die Datenquelle darf nicht leer sein.

public Form1() 
     { 
      InitializeComponent(); 
      dbconnection = @" Data Source = D:\SQLite\SQLiteStudio\DB1.db ; version=3 "; 
     } 

aber wenn ich den Code zu ändern, wie durch den Erhalt der Pfad als Texteingabe eine Fehlermeldung „Datenquelle sein kann, nicht leer“ folgt auftritt. Der Name des verwendeten Textfelds ist dbtext und der gleiche Pfad im obigen Code wird kopiert und in das Textfeld eingefügt!

public Form1() 
     { 
      InitializeComponent(); 
      dbconnection = @"Data Source="+dbtext.Text+";version=3"; 
     } 

Wie kann ich dieses Problem beheben?

+0

und was ist der Text 'dbtext.Text' –

+0

An welchem ​​Punkt wird der Pfad in das Textfeld eingegeben? Nachdem das Programm bereits gestartet ist? Ist dies der Fall, wird der Wert tatsächlich nicht an die Verbindungszeichenfolge übergeben. – waka

+0

@AshkanMobayenKhiabani das Textfeld hat den Test D: \ SQLite \ SQLiteStudio \ DB1.db –

Antwort

2

Das Problem ist, dass Sie es bei Formularinitialisierung festlegen, wo Textbox noch leer ist und Sie seinen Wert festlegen.

set dbconnection = @"Data Source="+dbtext.Text+";version=3"; on Klicken Sie auf das Ereignis der gleichen Schaltfläche, die die Daten oder Textänderung des Textfelds lädt.

1

Sie setzen die Verbindungszeichenfolge in dem Konstruktor des Programms:

public Form1() 
{ 
    InitializeComponent(); 
    dbconnection = @"Data Source="+dbtext.Text+";version=3"; 
} 

An diesem Punkt der TextBox noch leer ist und die Variable dbconnection wird wie folgt aussehen:

dbconnection = "DataSource=;version=3"; 

(Scheck es im Debugger).

Jetzt versuchen Sie, eine Verbindung zu Ihrem Button Click Event herzustellen, aber wohin? Stattdessen sollten Sie den Code wie folgt aussehen:

priavte void Button1_Click(object sender, EventArgs e) 
{ 
    dbconnection = "Data Source="+dbtext.Text+";version=3"; 
    //Do stuff with the connection 
} 
Verwandte Themen