检查c#中是否存在表

apo*_*020 5 c# sql

我想从名称由用户提供的表中读取数据.所以在实际开始读取数据之前,我想检查数据库是否存在.

我在NET上看到了几段声称可以执行此操作的代码.但是,它们似乎只适用于SQL服务器,或mysql或其他一些实现.有没有通用的方法来做到这一点?

(我已经单独检查是否可以连接到提供的数据库,所以我非常确定可以打开到数据库的连接.)

Dea*_*ing 3

您不能以跨数据库的方式执行此操作。一般来说,不同数据库的DDL(即创建表、索引等的代码)完全不同,因此检查表是否存在的逻辑也不同。

不过,我想说最简单的答案就是:

SELECT * FROM <table> WHERE 1 = 0
Run Code Online (Sandbox Code Playgroud)

如果该查询给出错误,则该表不存在。如果它有效(尽管它会返回 0 行),则该表存在。

不过,请务必小心用户输入的内容。什么可以阻止他指定“sysusers”作为表名(在 SQL Server 中,这将是所有数据库用户的列表)

  • 相反,我们知道这个查询不包含错误。唯一的依赖关系是给定的表应该存在于给定连接的上下文中。任何错误都意味着无法访问该表(或者无法处理的奇怪/随机的东西),因此我认为将引发的异常与无法访问所提供的表等同起来没有任何问题。 (3认同)