Sql server 在VB.NET中,谁能让包含特定表的所有数据库

Sql server 在VB.NET中,谁能让包含特定表的所有数据库,sql-server,vb.net,Sql Server,Vb.net,在VB.NET中,我试图返回具有特定表的所有数据库。我一直在使用的代码只是数据库,效果很好。当我添加下面的CASE语句以获得我需要的表中的语句时,它将不返回任何内容 strQuery = "SELECT [name] FROM sys.databases where create_date > '2016-07-01' and [name] not like '_Config_Options' order by create_date desc" sqlCon = New SqlCon

在VB.NET中,我试图返回具有特定表的所有数据库。我一直在使用的代码只是数据库,效果很好。当我添加下面的CASE语句以获得我需要的表中的语句时,它将不返回任何内容

strQuery = "SELECT [name] FROM sys.databases where create_date > '2016-07-01' and [name] not like '_Config_Options' order by create_date desc"

 sqlCon = New SqlConnection(strConn)
    Using (sqlCon)
        Dim sqlComm As SqlCommand = New SqlCommand(strQuery, sqlCon)
        sqlCon.Open()
        Dim sqlReader As SqlDataReader = sqlComm.ExecuteReader
        If sqlReader.HasRows Then
            While (sqlReader.Read())
                cmbDatabase.Items.Add(sqlReader.GetString(0))
            End While
        End If
        sqlReader.Close()
    End Using
上面的代码返回数据库的完整列表

当我将strQuery更改为

strQuery = "SELECT [name] FROM sys.databases WHERE CASE WHEN state_desc = ''ONLINE'' THEN OBJECT_ID(QUOTENAME([name]) + ''.[dbo].[MyTable]'', ''U'') END IS NOT NULL order by create_date desc"

我没有得到任何回报。在以SqlDataReader=sqlComm.ExecuteReader的形式执行Dim sqlReader后,代码使用跳转到末尾。我没有看到错误代码。

Joel Coehoom因回答问题而获得奖励。我删除了双单引号,它就工作了

strQuery = "SELECT [name] FROM sys.databases WHERE CASE WHEN state_desc = 'ONLINE' THEN OBJECT_ID(QUOTENAME([name]) + '.[dbo].[MyTable]', 'U') END IS NOT NULL order by create_date desc"

SQL在SSMS中执行良好。
当state_desc=''ONLINE''时。
注意两端的双单引号集。当state_desc='ONLINE'时,它应该是
完美的!谢谢你发现我的错误。它工作!!!我在以前需要它们的地方复制了代码。