using System;
using System.Data.SqlClient;
using System.Threading.Tasks;
namespace mRemoteNG.Config.DatabaseConnectors
{
///
/// A helper class for testing database connectivity
///
public class SqlDatabaseConnectionTester
{
public async Task TestConnectivity(string server, string database, string username, string password)
{
using (var sqlConnector = new SqlDatabaseConnector(server, database, username, password))
{
try
{
await sqlConnector.ConnectAsync();
return ConnectionTestResult.ConnectionSucceded;
}
catch (SqlException sqlException)
{
if (sqlException.Message.Contains("The server was not found"))
return ConnectionTestResult.ServerNotAccessible;
if (sqlException.Message.Contains("Cannot open database"))
return ConnectionTestResult.UnknownDatabase;
if (sqlException.Message.Contains("Login failed for user"))
return ConnectionTestResult.CredentialsRejected;
return ConnectionTestResult.UnknownError;
}
catch (Exception)
{
return ConnectionTestResult.UnknownError;
}
}
}
}
}