是否可以从任何数据库文件中读取

本文关键字:文件 读取 数据库 任何 是否 | 更新日期: 2023-09-27 18:15:36

我有一个数据库,其中创建了一些表,这些表被读取到我的c#应用程序中。是否有一种方法可以读取添加到数据库中的任何表的前两列,而不是在我的代码中写入查询,从而提取特定的表?例如,下面是我的代码,读取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#代码中?而不是每次都进入代码并在每次添加新表时执行查询,如上面的代码

是否可以从任何数据库文件中读取

所示。

您可以通过执行以下查询获得数据库中的所有表名:

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)