Получение всегда FALSE в результате метода Table Exists с использованием C# SQLClient MSSQL

У меня есть такой код для проверки существования базы данных:

    private bool CheckDatabase(string databaseName)
    {
        var connString = "Server=localhost\\SQLEXPRESS;Integrated Security = SSPI; database = master";           
        string cmdText = "select count(*) from master.dbo.sysdatabases where name=\'" + databaseName + "\'";         
        using (var sqlConnection = new SqlConnection(connString))
        {
            using (var sqlCmd = new SqlCommand(cmdText, sqlConnection))
            {                    
                sqlCmd.Parameters.Add(@"database", System.Data.SqlDbType.NVarChar).Value = databaseName;                    
                sqlConnection.Open();                    
                return Convert.ToInt32(sqlCmd.ExecuteScalar()) == 1;
            }
        }            
    }

РЕДАКТИРОВАТЬ: я использовал запрос из комментариев, но в результате всегда получаю false:

public static bool CheckTableExists()
    {
        var connString = "Server=localhost\\SQLEXPRESS;Integrated Security = SSPI; database = master";
        string cmdText = "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \'" + "databaseName" + "\' AND TABLE_NAME = \'" + "testingTable" + "\'";
        using (var sqlConnection = new SqlConnection(connString))
        {
            using (var sqlCmd = new SqlCommand(cmdText, sqlConnection))
            {
                sqlCmd.Parameters.Add(@"database", System.Data.SqlDbType.NVarChar).Value = "databaseName";

                sqlConnection.Open();

                return Convert.ToInt32(sqlCmd.ExecuteScalar()) == 1;
            }
        }
    }

person positive perspective    schedule 17.05.2018    source источник
comment
Я не могу найти решение самостоятельно, если я не смогу взять в руки какой-нибудь учебный ресурс slq.   -  person positive perspective    schedule 17.05.2018
comment
возможный дубликат stackoverflow.com/questions/464474/ проверить, существует ли таблица sql   -  person Prasad Telkikar    schedule 17.05.2018
comment
Возможный дубликат Есть ли C# API для sys .tables и sys.procedures?   -  person mjwills    schedule 17.05.2018
comment
размещенная вами ссылка не объясняет, как указать базу данных, в которой таблица существует (или нет)   -  person positive perspective    schedule 17.05.2018
comment
Я дам ему прочитать.   -  person positive perspective    schedule 17.05.2018


Ответы (3)


Вы можете легко проверить таблицы, существующие в SQL.

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'myDatabase' 
AND  TABLE_NAME = 'myTable'
person GiantJelly    schedule 17.05.2018
comment
превосходно! Именно то, что я искал. Можете ли вы направить меня в нужное место, чтобы я мог научиться создавать запросы самостоятельно? - person positive perspective; 17.05.2018
comment
да я понятия не имею, как это переварить. Я совершенно новичок в этом. - person positive perspective; 17.05.2018
comment
ах ладно, w3schools отличный ресурс :D - person GiantJelly; 17.05.2018
comment
@GiantJelly Я пробовал этот запрос в своем коде, но в результате всегда получаю false, и код пытается создать таблицу с таким именем, выдавая мне ошибку, что таблица существует. - person positive perspective; 17.05.2018

Чтобы получить список баз данных (а не таблиц): выберите имя из sys.databases

person Avo Nappo    schedule 17.05.2018

Другой способ - использовать try .. catch, как показано ниже, сделать запрос к таблице и поймать SqlException, например

    string cmdText = "select 1 from mytbl1";         
    using (var sqlConnection = new SqlConnection(connString))
    {
        using (var sqlCmd = new SqlCommand(cmdText, sqlConnection))
        {                    
            try
            {  
             sqlConnection.Open();                    
             return Convert.ToInt32(sqlCmd.ExecuteScalar()) == 1;
            }
            catch(SqlException ex)
            {
            }
        }
    }      
person Rahul    schedule 17.05.2018