2016-10-31 3 views
1

Ich habe eine Datenbank mit einigen Tabellen, die erstellt wurden, die in meine C# -Anwendung gelesen werden. Gibt es eine Möglichkeit, die ersten beiden Spalten einer Tabelle zu lesen, die der Datenbank hinzugefügt wird, anstatt eine Abfrage in meinem Code zu schreiben, die eine bestimmte Tabelle abruft? Für zB unten ist mein Code, der in der Liguanea_Lane Tabelle liest und füllt einen der automatischen Vervollständigung TextfeldKann ich aus einer Datenbankdatei lesen?

private void liguaneaRxToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.liguanea_LaneTableAdapter1.Fill(this.pharmaciesDataSet1.Liguanea_Lane); 
     try 
     { 

      string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True"; 
      SqlConnection con = new SqlConnection(connectionString); 
      con.Open(); 
      string query = "SELECT Code FROM dbo.Liguanea_Lane"; 
      SqlCommand cmd = new SqlCommand(query, con); 

      SqlDataReader dr = cmd.ExecuteReader(); 
      AutoCompleteStringCollection mycollection = new AutoCompleteStringCollection(); 
      while (dr.Read()) 
      { 

       mycollection.Add(dr.GetString(0)); 

      } 
      textBox2.AutoCompleteCustomSource = mycollection; 
      con.Close(); 
     } 
     catch (Exception ex) 
     { 

      MessageBox.Show(ex.ToString()); 
     } 

Statt in einer bestimmten Tabelle zu lesen und seine Spalte, gibt es eine Weise, die ich jeden Tisch lesen konnte? Das heißt, ich lege eine Tabelle mit dem Namen "Cat_values" an. Wie würde ich die erste oder zweite Spalte von Daten in meinen C# -Code einlesen? Anstatt jedes Mal in den Code zu gehen, und führen Sie die Abfrage jedes Mal, wenn eine neue Tabelle hinzugefügt wird, wie oben

+0

können Sie die Transaktionsprotokolle ansehen. –

+0

Ich habe viele Fragen. Zum Beispiel, woher weißt du * wann * eine Tabelle hinzugefügt wird? Woher weißt du, welcher Tisch es ist? Erwarten Sie, dass Sie die letzte erstellte Tabelle abfragen können? Oder etwas anderes? –

+0

die Tabellen haben die gleichen zwei Spalten durch. "Code" und "Beschreibung". Um zu wissen, wann es hinzugefügt wird, wird es manuell in der Datenbank hinzugefügt und die Option in meinem Code wird dort sein, um die Datei auszuwählen, aus der Inhalte gelesen werden sollen. Das Problem ist, dass ich nicht jedes Mal, wenn es hinzugefügt wird, in jeder Tabelle codieren möchte. Ich möchte nur von dieser Tabelle lesen, in der die Datenbank hinzugefügt wird – Jevon

Antwort

1

im Code gezeigt, können Sie in Ihrer Datenbank alle Tabellennamen erhalten, indem Sie die folgende Abfrage ausführen:

SELECT TABLE_NAME FROM YOURDB.INFORMATION_SCHEMA.Tables WHERE TABLE_TYPE = 'BASE TABLE' 

um zu verwalten, welche Tabellen seit der letzten Überprüfung hinzugefügt werden, können Sie eine Tabelle erstellen, die alle vorhandenen Tabellennamen wie folgt gilt:

CREATE TABLE [dbo].[DatabaseTables](
    [TableName] [nvarchar](64) NOT NULL PRIMARY KEY, 
    [DateAdded] [datetime] NOT NULL DEFAULT (getdate()) 
) 

Jedes Mal, wenn Sie die zusätzlichen Tabellen überprüfen, führen Sie die Anweisung unten um die Tabelle zu aktualisieren enthält die Datenbanktabellen:

INSERT INTO DatabaseTables(TableName) 
SELECT TABLE_NAME FROM YOURDB.INFORMATION_SCHEMA.Tables 
WHERE TABLE_TYPE = 'BASE TABLE' 
AND TABLE_NAME NOT IN (SELECT TableName FROM DatabaseTables) 
Verwandte Themen