diff --git a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml
index 9f83ce12a3..d66a654753 100644
--- a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml
+++ b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml
@@ -21,6 +21,7 @@
+
@@ -43,7 +44,7 @@
Database driver:
+ ItemsSource="{x:Static data:DatabaseDriver.DatabaseDrivers}">
@@ -58,7 +59,7 @@
-
@@ -66,14 +67,16 @@
-
+
+
+
+
+ Database:
- Database:
-
-
@@ -82,13 +85,13 @@
-
-
-
+
+
diff --git a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs
index a828c5abfa..8279b94664 100644
--- a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs
+++ b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs
@@ -54,7 +54,12 @@ namespace ICSharpCode.Data.Core.UI.Windows
get { return _selectedDatasource; }
set
{
- _selectedDatasource = value;
+ if (value != null)
+ btnConnect.IsEnabled = true;
+ else
+ btnConnect.IsEnabled = false;
+
+ _selectedDatasource = value;
OnPropertyChanged("SelectedDatasource");
}
}
@@ -133,7 +138,6 @@ namespace ICSharpCode.Data.Core.UI.Windows
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Start();
-
}
private void PopulateDatabases()
@@ -152,7 +156,10 @@ namespace ICSharpCode.Data.Core.UI.Windows
}
catch (Exception ex)
{
- SetException(ex);
+ Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
+ {
+ MessageBox.Show(this, ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error);
+ }));
}
SetIsLoading(false);
@@ -168,17 +175,12 @@ namespace ICSharpCode.Data.Core.UI.Windows
#region Event handlers
- private void cboDatabaseDriver_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ private void btnAutoDiscover_Click(object sender, RoutedEventArgs e)
{
PopulateDatasources();
}
- private void cboDatasources_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- PopulateDatabases();
- }
-
- private void erbDatasources_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+ private void btnConnect_Click(object sender, RoutedEventArgs e)
{
PopulateDatabases();
}
@@ -189,18 +191,7 @@ namespace ICSharpCode.Data.Core.UI.Windows
{
if (SelectedDatabaseDriver != null)
{
- IDatasource newDatasource = SelectedDatabaseDriver.AddNewDatasource(cboDatasources.Text);
-
- try
- {
- if (newDatasource.PopulateDatabases())
- SetSelectedDatasource(newDatasource);
- }
- catch (Exception ex)
- {
- SetException(ex);
- SetSelectedDatasource(newDatasource);
- }
+ SelectedDatasource = SelectedDatabaseDriver.AddNewDatasource(cboDatasources.Text);
}
}
}
diff --git a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs
index a0fbc6f329..7a23c2f4b3 100644
--- a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs
+++ b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs
@@ -13,6 +13,8 @@ using ICSharpCode.Data.Core.DatabaseObjects;
using System.Data.SqlClient;
using System.Collections.Specialized;
using ICSharpCode.Data.Core.Enums;
+using System.Windows;
+using System.Windows.Threading;
#endregion
@@ -171,7 +173,29 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer
SqlConnection sqlConnection = null;
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = datasource.ConnectionString;
- sqlConnection.Open();
+
+ try
+ {
+ sqlConnection.Open();
+ }
+ catch (SqlException ex)
+ {
+ switch (ex.Number)
+ {
+ case 2:
+ case 3:
+ case 53:
+ Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
+ {
+ Datasources.Remove(datasource as SQLServerDatasource);
+ }));
+ break;
+ default:
+ break;
+ }
+
+ throw ex;
+ }
string sqlversion = sqlConnection.ServerVersion;
sqlversion = sqlversion.Split('.').FirstOrDefault(); //major version