Reputation: 349
I have the code like this for checking if database exists:
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;
}
}
}
EDIT: I used the query from the comments but I am always getting false as a result:
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;
}
}
}
Upvotes: 0
Views: 100
Reputation: 77846
Another way is using a try .. catch
like below, make a query against the table and catch the SqlException
like
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)
{
}
}
}
Upvotes: 0
Reputation: 630
To get the list of databases (rather than tables): select name from sys.databases
Upvotes: 0
Reputation: 305
You can check for tables existing in SQL pretty easily
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'myDatabase'
AND TABLE_NAME = 'myTable'
Upvotes: 1