none
probleme de lecture sur base de données serveur distant RRS feed

  • Question

  • Bonjour,

    J ai un soucis pour récupérer les tables que j'ai sur un serveur distant. J'ai créer un petit bout de code test pour y acceder. La connexion vers la base de donnée s'effectue bien mais lors de la lecture j ai un probleme et je comprend absolument rien au fichier de l'erreur.

    Voici l'erreur copier dans le presse papier :

    L'exception System.Windows.Markup.XamlParseException n'a pas été gérée
      HResult=-2146233087
      Message='L'invocation du constructeur sur le type 'Gestiopa_Gestions.MainWindow' qui correspond aux contraintes de liaison spécifiées a levé une exception.' numéro de ligne '3' et position de ligne '9'.
      Source=PresentationFramework
      LineNumber=3
      LinePosition=9
      StackTrace:
           à System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
           à System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
           à System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
           à System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
           à System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
           à System.Windows.Application.DoStartup()
           à System.Windows.Application.<.ctor>b__1(Object unused)
           à System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
           à MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
           à System.Windows.Threading.DispatcherOperation.InvokeImpl()
           à System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
           à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           à System.Windows.Threading.DispatcherOperation.Invoke()
           à System.Windows.Threading.Dispatcher.ProcessQueue()
           à System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
           à MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
           à MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
           à System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
           à MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
           à System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
           à MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
           à MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
           à System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
           à System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
           à System.Windows.Threading.Dispatcher.Run()
           à System.Windows.Application.RunDispatcher(Object ignore)
           à System.Windows.Application.RunInternal(Window window)
           à System.Windows.Application.Run(Window window)
           à System.Windows.Application.Run()
           à Gestiopa_Gestions.App.Main() dans C:\Users\Sector4\Documents\Visual Studio 2010\Projects\Gestiopa_Gestions\Gestiopa_Gestions\obj\x86\Debug\App.g.cs:ligne 0
           à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           à System.Threading.ThreadHelper.ThreadStart()
      InnerException: System.InvalidOperationException
           HResult=-2146233079
           Message=La connexion n'est pas fermée. L'état actuel de la connexion est ouvert.
           Source=System.Data
           StackTrace:
                à System.Data.ProviderBase.DbConnectionInternal.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
                à System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
                à System.Data.SqlClient.SqlConnection.Open()
                à Gestiopa_Gestions.MainWindow..ctor() dans C:\Users\Sector4\Documents\Visual Studio 2010\Projects\Gestiopa_Gestions\Gestiopa_Gestions\MainWindow.xaml.cs:ligne 43
           InnerException: 
    

    et voici le code C# :

    public MainWindow()
            {
                InitializeComponent();
                // Connexion à la BDD
                SqlConnection wConnexion = new SqlConnection();
                wConnexion.ConnectionString = "Database=Gestion_Gestiopia;Data Source=tcp:*********.database.windows.net,1433;User Id=********;Password=*******";
                // Tenter la connexion sinon afficher un message d’erreur
                try
                {
                    wConnexion.Open();
                    MessageBox.Show("Connexion réussi !");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Impossible d'ouvrir la connexion !");
                    MessageBox.Show(ex.Message);
                }
    
                SqlCommand cmd;
                SqlDataReader lecteur;
                wConnexion.Open();
                cmd = new SqlCommand();
                cmd.Connection = wConnexion;
                cmd.CommandText = "SELECT * FROM User";
                lecteur = cmd.ExecuteReader();
                while (lecteur.Read())
                {
                    textBlock3.Text = lecteur["Pseudo"].ToString();
                    textBlock3.Text = lecteur["MotPasse"].ToString();
                }
                lecteur.Close();
                wConnexion.Close();
    
                
    
            }

    Comme dit la connexion se fait bien mais c'est lors de la lecture de la table que ca beug.

    Si vous pourriez m'aider ce serais avec grand plaisir.

    Merci

    mardi 24 juillet 2012 14:02

Réponses

  • Essayez "SELECT * FROM [User]". Je pense que User est un mot réservé que les crochets vont signaler explicitement comme un nom d'objet et non pas comme le mot clé "USER" (on peut faire un CREATE USER par exemple).

    Sinon malgré votre mauvaise expérience avec les messages d'erreur, merci de prendre l'habitude de toujours poster le message d'erreur. Dans 90% des cas cela permet tout de même de partir rapidement dans la bonne direction.

    Sur ASP.NET vs WPF si vous utilisez les mêmes classes dans les deux cas, il n'y a pas de raison que l'usage de ces classes soit différent selon le contexte...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Sector4 mardi 24 juillet 2012 19:54
    mardi 24 juillet 2012 16:00

Toutes les réponses

  • Bonjour,

    Si on remonte à l'erreur initiale on trouve "La connexion n'est pas fermée. L'état actuel de la connexion est ouvert" et effectivement on trouve deux fois wConnexion.Open() dans le code ce qui semble donc illégal.

    On a parfois une "chaîne" d'exceptions, il faut donc aller voir la première InnerException qui est donc la cause originale du problème (ici en gros, .NET signale qu'il y a eu une erreur dans l'instanciation de la fenêtre depuis le fichier XAML mais c'est à cause donc de ce problème original "La connexion n'est pas fermée" dans le code du constructeur de cette fenêtre).


     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    mardi 24 juillet 2012 14:49
  • Bonjour,

    Meme en supprimant 1 Open() pour qu il en reste qu'un j ai encore une erreur. Est ce que mon code est il bon pour ce connecter et lire une BDD distante??

    Auriez vous des exemples car je cherche mais ne trouve pas grand chose a se sujet. Pour asp.net il y en as plein mais pas pour wpf.

    mardi 24 juillet 2012 15:18
  • Essayez "SELECT * FROM [User]". Je pense que User est un mot réservé que les crochets vont signaler explicitement comme un nom d'objet et non pas comme le mot clé "USER" (on peut faire un CREATE USER par exemple).

    Sinon malgré votre mauvaise expérience avec les messages d'erreur, merci de prendre l'habitude de toujours poster le message d'erreur. Dans 90% des cas cela permet tout de même de partir rapidement dans la bonne direction.

    Sur ASP.NET vs WPF si vous utilisez les mêmes classes dans les deux cas, il n'y a pas de raison que l'usage de ces classes soit différent selon le contexte...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Sector4 mardi 24 juillet 2012 19:54
    mardi 24 juillet 2012 16:00
  • Merci Patrice, c'était bien les crochets.

    Et ce qui est des messages d'erreurs je prend note je posterais à l'avenir.

    Merci encore.

    mardi 24 juillet 2012 19:56