Browse Source

Data AddIn - Connection Wizard: Improved exception handling

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4974 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Philipp Maihart 16 years ago
parent
commit
84294839c2
  1. 2
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml
  2. 17
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs
  3. 6
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core/DatabaseObjects/Constraint.cs
  4. 10
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core/DatabaseObjects/Datasource.cs
  5. 11
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.DemoApp/MainWindow.xaml.cs
  6. 21
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatasource.cs

2
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml

@ -84,7 +84,7 @@ @@ -84,7 +84,7 @@
<Expander Grid.Row="5" Grid.Column="1" Margin="2" Header="Connection String" VerticalAlignment="Top"
IsExpanded="{Binding SelectedDatasource.UseUserDefinedConnectionString, ElementName=This}">
<TextBox Text="{Binding SelectedDatasource.ConnectionString, ElementName=This}" MinLines="5" />
<TextBox Text="{Binding SelectedDatasource.UserDefinedConnectionString, ElementName=This}" MinLines="5" />
</Expander>
<userControls:LoadingCircle Grid.Row="6" Margin="3" IsActivated="{Binding IsLoading, ElementName=This}" />

17
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs

@ -112,6 +112,11 @@ namespace ICSharpCode.Data.Core.UI.Windows @@ -112,6 +112,11 @@ namespace ICSharpCode.Data.Core.UI.Windows
Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { DatasourceException = exception; }));
}
private void SetSelectedDatasource(IDatasource datasource)
{
Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { SelectedDatasource = datasource; }));
}
private void PopulateDatasources()
{
Thread thread = new Thread(new ThreadStart(delegate()
@ -185,7 +190,17 @@ namespace ICSharpCode.Data.Core.UI.Windows @@ -185,7 +190,17 @@ namespace ICSharpCode.Data.Core.UI.Windows
if (SelectedDatabaseDriver != null)
{
IDatasource newDatasource = SelectedDatabaseDriver.AddNewDatasource(cboDatasources.Text);
newDatasource.PopulateDatabases();
try
{
if (newDatasource.PopulateDatabases())
SetSelectedDatasource(newDatasource);
}
catch (Exception ex)
{
SetException(ex);
SetSelectedDatasource(newDatasource);
}
}
}
}

6
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core/DatabaseObjects/Constraint.cs

@ -123,9 +123,9 @@ namespace ICSharpCode.Data.Core.DatabaseObjects @@ -123,9 +123,9 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
{
IColumn pkColumn = PKColumns.First();
//if (pkColumn.IsPrimaryKey && pkColumn.IsForeignKey)
// return Cardinality.One;
//else
if (pkColumn.IsPrimaryKey && pkColumn.IsForeignKey)
return Cardinality.One;
else
if (pkColumn.IsPrimaryKey)
return Cardinality.Many;
else if (!pkColumn.IsPrimaryKey && !FKColumns.First().IsNullable)

10
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core/DatabaseObjects/Datasource.cs

@ -9,6 +9,7 @@ using System.Collections.ObjectModel; @@ -9,6 +9,7 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Controls;
using System.Windows;
using System.Data.SqlClient;
#endregion
@ -139,12 +140,15 @@ namespace ICSharpCode.Data.Core.DatabaseObjects @@ -139,12 +140,15 @@ namespace ICSharpCode.Data.Core.DatabaseObjects
}
catch (Exception exception)
{
_databaseDriver.RemoveDatasource(Name);
MessageBox.Show("Error while trying to populate databases.\n\n" + exception.Message, _databaseDriver.Name, MessageBoxButton.OK, MessageBoxImage.Exclamation);
return false;
return HandlePopulateDatabasesException(exception);
}
}
protected virtual bool HandlePopulateDatabasesException(Exception exception)
{
return false;
}
public string GetConnectionStringSetting(string setting)
{
if (_connectionStringSettings.ContainsKey(setting))

11
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.DemoApp/MainWindow.xaml.cs

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
using System;
#region Usings
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
#region Usings
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
@ -15,6 +15,8 @@ using System.Windows.Navigation; @@ -15,6 +15,8 @@ using System.Windows.Navigation;
using System.Windows.Shapes;
using ICSharpCode.Data.EDMDesigner.Core.Windows;
using ICSharpCode.Data.EDMDesigner.Core.Windows.EDMWizard;
using System.Data.Sql;
using System.Data;
#endregion
@ -35,6 +37,9 @@ namespace ICSharpCode.Data.DemoApp @@ -35,6 +37,9 @@ namespace ICSharpCode.Data.DemoApp
//EDMWizardWindow edmWizardWindow = new EDMWizardWindow("C:\\TEMP\\test.ssdl");
//EDMWizardWindow edmWizardWindow = new EDMWizardWindow(new OpenedFile()
//edmWizardWindow.ShowDialog();
MessageBox.Show("Test");
DataTable dt = SqlDataSourceEnumerator.Instance.GetDataSources();
MessageBox.Show(dt.Rows.Count.ToString());
}
}
}

21
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatasource.cs

@ -7,6 +7,7 @@ using ICSharpCode.Data.SQLServer.ControlPanel; @@ -7,6 +7,7 @@ using ICSharpCode.Data.SQLServer.ControlPanel;
using System.Windows;
using System.Windows.Threading;
using System;
using System.Data.SqlClient;
#endregion
@ -91,5 +92,25 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer @@ -91,5 +92,25 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer
}
#endregion
#region Methods
protected override bool HandlePopulateDatabasesException(Exception exception)
{
SqlException sqlException = exception as SqlException;
if (sqlException.Number == 67)
{
DatabaseDriver.RemoveDatasource(Name);
MessageBox.Show("Error while trying to populate databases.\n\n" + exception.Message, DatabaseDriver.Name, MessageBoxButton.OK, MessageBoxImage.Exclamation);
return false;
}
else
{
throw exception;
}
}
#endregion
}
}

Loading…
Cancel
Save