Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Accedere ad un database MySQL da Compact Framework

L'ultima versione del Connector/NET di MySQL, la 5.1, supporta anche il .NET Compact Framework 2.0. Oggi ho provato ad utilizzarla, quindi ho aggiunto al mio progetto il riferimento alla libreria MySQL.Data.CF.dll e ho tentato di aprire una connessione verso un database remoto... Purtroppo nel momento di eseguire il metodo Open dell'oggetto MySqlConnection viene restituita la seguente eccezione:

System.MissingMethodException: Can't find PInvoke DLL 'kernel32.dll'

Un'occhiata allo Stack trace mostra che il problema risiede nel costruttore della classe MySql.Data.Common.Semaphore. A questo punto ho disassemblato la classe incriminata con Reflector e, così, ho scoperto la causa del problema, ovvero le seguenti dichiarazioni:

[DllImport("kernel32.dll", SetLastError=true)] private static extern IntPtr CreateSemaphore(ref SECURITY_ATTRIBUTES securityAttributes, int initialCount, int maximumCount, string name); [DllImport("kernel32.dll")] private static extern bool ReleaseSemaphore(IntPtr hSemaphore, int lReleaseCount, IntPtr lpPreviousCount);

Che non sono corrette perché la libreria kernel32.dll non fa parte della piattaforma Windows Mobile.

Per farla breve, queste funzioni vengono richiamate quando si utilizza il Connection pooling (che è l'impostazione predefinita). Di consenguenza, in attesa che il codice venga corretto, per utilizzare MySQL da .NET Compact Framework è necessario disabilitare il pooling, specificando il parametro

pooling=false

Nella stringa di connessione che viene passata all'oggetto MySqlConnection.

Print | posted on giovedì 3 maggio 2007 17:32 | Filed Under [ .NET Compact Framework ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET