Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以从任何数据库文件中读取?_C#_Sql Server_Winforms - Fatal编程技术网

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

C# 是否可以从任何数据库文件中读取?,c#,sql-server,winforms,C#,Sql Server,Winforms,我有一个数据库,其中包含一些创建的表,这些表被读取到我的c应用程序中。有没有一种方法可以读取添加到数据库中的任何表的前两列,而不是在我的代码中写入用于提取特定表的查询?例如,下面是我在Liguanea_Lane表中读取并填充自动完成文本字段的代码 private void liguaneaRxToolStripMenuItem_Click(object sender, EventArgs e) { this.liguanea_LaneTableAdapter1.Fill

我有一个数据库,其中包含一些创建的表,这些表被读取到我的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)

你可以看看交易记录。我有很多问题。例如,您如何知道何时添加了表?你怎么知道这是什么桌子?您是否希望能够查询创建的最后一个表?或者别的什么?这些表的两列都是一样的。代码和说明。至于知道何时添加它,它是手动添加到数据库中的,我的代码中的选项将在那里选择要从中读取内容的文件。问题是,我不想每次添加表时都在每个表中编写代码。我只想从这个表中读一读,它被添加到了数据库中。这里最大的问题是我们没有提供足够的信息来帮助您。简而言之,在你得到答案之前,你需要的是一个问题。正如所贴的,这不是一个完整的问题,所以任何答案都将是部分答案或猜测。好的,让我更清楚地问这个问题。我有一个C UI,我想从sql数据库中读取任何文件。进一步扩展的是,如果我要向sql添加一个包含数据的表,我希望我的UI能够读取该表的前两列,而不必在我的应用程序中为该特定表创建代码。所以,就像您将有一个查询说从表中选择代码,而不是每次编写一个查询来从相应的表中提取一样,您将有一个查询,它从表中的特定列中提取,而不管数据库中添加了什么表。