当前位置: 首页 > 面试题库 >

有没有一种使用ADO.NET的方法来确定与任何数据提供程序一起使用的数据库中是否存在表?

岳安福
2023-03-14
问题内容

有没有一种使用ADO.NET的方法来确定与任何数据提供程序一起使用的数据库中是否存在表?

我目前正在做这样的事情:

bool DoesTableExist(string tableName)
{
    DbCommand command = this.dbConnection.CreateCommand();
    command.CommandText = "SELECT 1 FROM " + tableName;
    try
    {
        using (DbDataReader reader = command.ExecuteReader())
        {
            return true;
        }
    }
    catch (DbException)
    {
        return false;
    }
}

我希望有一种方法不涉及捕获异常。


问题答案:

好了,您可以使用该Connection.GetSchema("TABLES")方法。

这将返回,DataTable其中将包含数据库中所有表的行。在这里,您可以对此进行检查,看看该表是否存在。

然后可以进一步采取以下措施:

    private static bool DoesTableExist(string TableName)
    {
        using (SqlConnection conn = 
                     new SqlConnection("Data Source=DBServer;Initial Catalog=InitialDB;User Id=uname;Password=pword;"))
        {
            conn.Open();

            DataTable dTable = conn.GetSchema("TABLES", 
                           new string[] { null, null, "MyTableName" });

            return dTable.Rows.Count > 0;
        }
    }

如果您使用的是.NET 3.5,则也可以将其作为扩展方法。



 类似资料:
  • 本文向大家介绍C#使用ADO.Net部件来访问Access数据库的方法,包括了C#使用ADO.Net部件来访问Access数据库的方法的使用技巧和注意事项,需要的朋友参考一下 数据库的访问是所有编程语言中最重要的部分,C#提供了ADO.Net部件用于对数据库进行访问。我们将从最简单易用的微软Access数据库入手讨论在C#中对数据库的访问。 C#中的Connection对象和Command对象与A

  • 问题内容: 有没有办法检查输入流()是否有数据? 从GO的初始stdin中读取帖子?显示了如何读取数据,但是不幸的是,如果没有数据通过管道传送到stdin中,则会阻塞。 问题答案: os.Stdin与其他任何“文件”一样,因此您可以检查其大小: 我将其构建为“管道”可执行文件,其工作方式如下:

  • 正如标题所述。转义数字输入是标准程序/做法吗? 我知道文本字段应该转义,但我想知道是否需要转义数字。

  • 问题内容: 我知道你可以打电话 如果它不是可执行文件,则会得到一个异常,但这是不安全的,因为运行可执行文件会产生副作用。 我想只检查扩展名在Windows上就足够了,但是有没有办法我可以读取* nix文件系统上的可执行文件呢? 找出文件在OS中是否可执行的最佳方法是什么? 问题答案: 参见java.io.File.canExecute()

  • 我正在使用@DataProvider使用TestNG 6.14.3Java编写单元测试 我想实现的目标: 我想为每个数据提供程序案例命名 我所尝试的: > 我添加了一个额外的参数并遵循了此指南,问题是现在我在每个我不想要的测试中都有一个未使用的参数。 创建一个忽略第一个参数的自定义数据提供程序注释,这不起作用,因为我找不到将其与TestNG集成的方法。 我的问题: 是否有一种内置的方式为测试用例提

  • 首先,我的问题与这里列出的相同:为什么我会得到AbstractDynamicObject$CustomMessageMissingMethodException错误? 修复提供了降级我们的谷歌服务到一个较老的4.3.5版本,但问题是我的Firebase实时数据库需要谷歌服务4.3.6,所以我想知道是否有一个方法使它工作。 感谢您的阅读!