Affichage des articles dont le libellé est SQL SERVER. Afficher tous les articles
Affichage des articles dont le libellé est SQL SERVER. Afficher tous les articles

8 novembre 2010

INFOPATH : ADOQueryConnection

Lors de l'utilisation d'InfoPath Form Services, vous pouvez être amené à vouloir soumettre des données dans une base SQL SERVER.
Malheureusement cela n'est pas possible nativement.
Pour cela, il est possible d'utiliser 2 méthodes pour l'insertion en BD:
  • Via un workflow SharePoint (utilisation de Worflow Foundation par exemple),
  • Dans le formulaire Form Services à l'aide de code personnalisé (C# ou VB.Net).
Si vous souhaitez réaliser ceci dans le code du formulaire, il est possible de se servir d'un fichier de connexion de données (UDCX).
Malheureusement les paramètres de la connexion de données ne sont pas tous supportés par une connexion SQL classique.
Par exemple le paramètre "Provider" précisé dans le fichier UDCX n'est pas toléré lors de la création du SQLConnection.
Il faut donc décomposer la chaine de connexion du fichier UDCX pour se récréer une chaine de connexion valide:

AdoQueryConnection ConnexionsSQL = (AdoQueryConnection)DataConnections["NomDataConnexionBD"];
string strConnexionString = GetConnectionString(ConnexionsSQL);
using (SqlConnection connexion = new SqlConnection(strConnexionString)
{
     ...
}

La fonction "GetConnectionString" est définie de la façon suivante:

private string GetConnectionString(AdoQueryConnection queryConnection)
{
    try
    {
            var password = GetConnectionStringParameter(queryConnection, "Password");
            var user = GetConnectionStringParameter(queryConnection, "User ID");
            var server = GetConnectionStringParameter(queryConnection, "Data Source");
            var db = GetConnectionStringParameter(queryConnection, "Initial Catalog");             
            return string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=True;", server, db, user, password);
    }
    catch (Exception ex)
    {
            throw new Exception("Erreur lors de la récupération de la chaine de connexion", ex);
    }
}

7 novembre 2010

INFOPATH : Connexion compte SQL

Lors de l'utilisation d'une connexion de données à une base de données SQL, vous devez utiliser un des modes d'authentification suivant:
  • Authentification intégrée (compte de domaine),
  • Un compte SQL SERVER en précisant un login sql et un mot de passe (tel le compte 'sa').
Si vous choisissez la deuxième option dans un formulaire InfoPath Form Services, vous obtiendrez le message d'erreur suivant lors de l'utilisation du formulaire:
"System.Net.WebException: Les paramètres de configuration actuels n'autorisent pas l'incorporation du nom d'utilisateur et du mot de passe dans la chaîne de connexion de base de données."

Il s'agit d'un problème de sécurité qui peut se contourner en allant modifier les paramètres de la configuration d'InfoPath Form Services (disponible via l'administration centrale de SharePoint).

Une fois positionné dans le panneau de la configuration, il faudra sélectionner "Autoriser l'authentification SQLincorporée" et cocher "Oui".
Ainsi votre formulaire fonctionnera à merveille avec une connexion à une base de données via un compte SQL SERVER.