我正在开发一个WPF应用程序,如果安装了MySQL,它将安装,
所以在安装之前我想检查mysql.proc
表是否存在。
我用Google搜索并最终得到了一个查询
select * from information_schema.Tables
where Table_schema = Schema() and Table_Name = 'mysql.proc'
此查询返回一个空行。
我也尝试过简单的select语句
select * from mysql.proc
,
并返回一个包含所有存储过程名称的表,但如果该表不存在则会在c#代码中抛出异常。
那么有什么办法可以从c#中激活一个查询并获取一个布尔值,具体取决于mysql.proc
表是否存在?
答案 0 :(得分:1)
试试SHOW TABLES FROM mysql LIKE 'proc'
。如果没有结果行,则该表不存在。如果有一行,则表存在。请注意,此方法不能跨RDBMS移植,但这似乎不是您的担忧。
对于您的第一个查询,SCHEMA()
返回默认数据库,因此如果它不是“mysql”,则查询将失败。同样,Table_Name
列中的数据不包含数据库名称,因此与'mysql.proc'相比总是会失败。