gpt4 book ai didi

c# - 如何知道表是否存在于 OleDb 连接的 Access 数据库中

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:46 25 4
gpt4 key购买 nike

我正在使用下面的代码通过 C# .Net 中的 OleDb 连接来连接到 Access 数据库

我如何知道我硬编码到程序中的表是否确实存在于文件中,以便我可以向用户显示适当的消息?

try
{
var dbSource = "Data Source = " + source;
const string dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;";

using (var con = new OleDbConnection())
{
con.ConnectionString = dbProvider + dbSource;
con.Open();

using (var cmd = new OleDbCommand())
{
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM [Concrete Design Table 1]";

// How do I know the table name is valid? It results in errors when it is not?
// How to prevent it?
using (var dataReader = cmd.ExecuteReader())
{
while (dataReader != null && dataReader.Read())
{
// read the table here
}
}
}
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}

最佳答案

您可以使用以下命令获取表列表

var schema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

并通过它们:

foreach (var row in schema.Rows.OfType<DataRow>())
{
string tableName = row.ItemArray[2].ToString();
}

或检查是否存在:

if (schema.Rows
.OfType<DataRow>()
.Any(r => r.ItemArray[2].ToString().ToLower() == tablename.ToLower()))
{
// table exists
}

丑,我知道。 :(

关于c# - 如何知道表是否存在于 OleDb 连接的 Access 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com