我有一个数据库,其中包含一些已读入我的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#代码?每次添加一个新表时,不必每次都进入代码,如上面的代码所示,
答案 0 :(得分: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)