2016-10-31 8 views
1

私はC#アプリケーションに読み込まれるいくつかのテーブルを持つデータベースを持っています。特定のテーブルを取得するコード内のクエリで記述するのではなく、データベースに追加されるテーブルの最初の2つの列を読み取る方法はありますか?以下の例の場合Liguanea_Laneテーブルに読み込み、オートコンプリートテキストフィールド任意のデータベースファイルから読み込むことはできますか?

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()); 
     } 

代わりに、特定のテーブルとその列に読みを移入する私のコードで、私は任意のテーブルを読むことができる方法はありますか?意味は、私は "Cat_values"と呼ばれるテーブルを作成すると私はどのように私のC#のコードにデータの最初または2番目の列を読むだろうか?むしろ新しいテーブルが

+0

トランザクションログを見ることができます。 –

+0

私にはたくさんの質問があります。たとえば、テーブルが追加されたときに*どのように知っていますか?それがどのようなテーブルであるかをどのように知っていますか?あなたは "作成された最後のテーブル"を照会できると思っていますか?それとも別のこと? –

+0

テーブルには、同じ2つの列が右端にあります。 「コード」と「説明」。いつ追加されるのかは、データベースに手動で追加され、コード内のオプションはそこからコンテンツを読み込むファイルを選択するためのものです。問題は、それが追加されるたびに各テーブルでコード化したくないということです。私はちょうどそれがデータベースに追加されているそのテーブルからお読みになりたいです – Jevon

答えて

1

上記のコードで示されているように追加されるたびに、次のクエリを実行して、データベース内のすべてのテーブル名を取得することができますコードに毎回行くと、クエリを実行するよりも:

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

あなたの最後のチェック以降に追加されたテーブルを管理するために、あなたはこのようなすべての既存のテーブル名を保持するテーブルを作成することがありますが:

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

追加したテーブルを検査するたびに、以下のステートメントを実行テーブルを更新する

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) 
関連する問題