IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SharePoint .NET Discussion :

Connecting to Database Using Custom Webpart in Sharepoint 2007


Sujet :

SharePoint .NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut Connecting to Database Using Custom Webpart in Sharepoint 2007
    Bonjour,

    j'ai crée un webpart personnalisé avec laquel je me connecte a une base de données pour en extraire qualques infos et les mettre dans un datagrid pour les afficher sur le site sharepoint.

    je deploie mon webpart dans le GAC et ca passe trés bien mais quand je veux utiliser le webpart je recoie le message d'erreur suivant :

    Échec de la demande d'autorisation de type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

    Voici mon code source :

    using System;
    using System.Runtime.InteropServices;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Serialization;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.SharePoint.WebPartPages;
    using System.Data;
    using System.Data.SqlClient;
    namespace DataBaseConnWebPart
    {
    [Guid("9b7dac5e-5276-481e-ba6c-08016484a01d")]
    public class DBConnWebPart : System.Web.UI.WebControls.WebParts.WebPart
    {
    DataGrid grid;
    Label messages;
    public DBConnWebPart()
    {
    }

    protected override void CreateChildControls()
    {
    //Add grid
    grid = new DataGrid();
    grid.AutoGenerateColumns = false;
    grid.Width = Unit.Percentage(100);
    grid.GridLines = GridLines.Horizontal;
    grid.CellPadding = 2;

    //Add Grid columns
    BoundColumn column = new BoundColumn();
    column.DataField = "_id_filière";
    column.HeaderText = "_id_filière";
    grid.Columns.Add(column);

    column = new BoundColumn();
    column.DataField = "Dénomination";
    column.HeaderText = "Dénomination";
    grid.Columns.Add(column);

    //Adding the Grid to Controls
    Controls.Add(grid);

    //Add label
    messages = new Label();
    Controls.Add(messages);
    }
    protected override void RenderContents(HtmlTextWriter writer)
    {
    // Declaring a dataset
    DataSet dataSet = null;

    // SQL Query
    string sql = "select _id_filière, Dénomination from dbo.Filière";

    //Defining the connection SQL connection string
    SqlConnection sqlcon = new SqlConnection("Data Source=AMRMOSS;Initial Catalog=E-CPGE");

    // Pulling the data using try catch block
    try
    {
    sqlcon.Open();
    SqlDataAdapter adapter = new SqlDataAdapter(sql, sqlcon);
    dataSet = new DataSet("root");
    adapter.Fill(dataSet, "Filière");
    }
    catch (SqlException x)
    {
    messages.Text = x.Message;
    }
    catch (Exception x)
    {
    messages.Text += x.Message;
    }

    //Bind data
    try
    {
    grid.DataSource = dataSet;
    grid.DataMember = "Filière";
    grid.DataBind();
    }
    catch (Exception x)
    {
    messages.Text += x.Message;
    }

    //Display data
    writer.Write("<table border=\"0\" width=\"100%\">");
    writer.Write("<tr><td>");
    grid.RenderControl(writer);
    writer.Write("</td></tr>");
    writer.Write("<tr><td>");
    messages.RenderControl(writer);
    writer.Write("</td></tr>");
    writer.Write("</table>");
    }
    }
    }


    Je pense que c'est un problème d'authorisation mais dans quel niveau je sais pas.

    si quelqu'un a une idée sur ça!

    merci.

  2. #2
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Points : 311
    Points
    311
    Par défaut
    Le problème vient de ton SQLConnection je pense. Il doit ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SqlConnection connection = new SqlConnection("database=maDatabase; server=nomServeur;User ID=loginPourConnecterSurBDD;pwd=Password;");

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Points : 1 663
    Points
    1 663
    Par défaut
    +1 il te manque les infos d'authentification dans ta chaine de connexion
    => User ID et pwd

  4. #4
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    d'accord je vais les ajouter et verifier.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    jai ajouter le User Id et le Password corrects mais le problème persiste toujours.

    y-a-t-il pas une autre piste?

  6. #6
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Points : 311
    Points
    311
    Par défaut
    Es-tu sure que le compte a accès à la BDD ?
    Pour se faire, connecte toi sur la BDD avec ce login et ce mot de passe. Il faut bien penser à sélectionner le bon mode de connection (SQL ou Windows). Si tu as pu te connecter et effectuer des requetes avec SELECT c'est que le problème ne vient pas du compte.
    Est-ce un compte SQL ou Windows parce que si c'est un sql, le serveur doit accepté les connections SQL (par défaut seulement windows).

  7. #7
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Shifty_ Voir le message
    Es-tu sure que le compte a accès à la BDD ?
    Pour se faire, connecte toi sur la BDD avec ce login et ce mot de passe. Il faut bien penser à sélectionner le bon mode de connection (SQL ou Windows). Si tu as pu te connecter et effectuer des requetes avec SELECT c'est que le problème ne vient pas du compte.
    Est-ce un compte SQL ou Windows parce que si c'est un sql, le serveur doit accepté les connections SQL (par défaut seulement windows).

    Je me connecte a sqlserver avec le compte SQL pas avec Windows et aves le user id et le password que j'ai mis dans la chaine de connexion, je peux creer des requetes sur la BDD que jai mis dans la connexion et tous. Mais le webpart ne marche pas ??

    ou est l'erreur?

  8. #8
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Points : 311
    Points
    311
    Par défaut
    Moi j'essayerais un code beaucoup plus simple du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    // Objet connection
    SqlConnection connection = new SqlConnection("database=maDatabase; server=nomServeur;User ID=loginPourConnecterSurBDD;pwd=Password;");
    try
    {
        // Ouverture
        connection.Open();
     
        // Creation Requete
        SqlCommand myCommand = new SqlCommand(query, connection);
        // Execution de la requete et récupération du résultat
        SqlDataReader myReader = myCommand.ExecuteReader();
        if (myReader.HasRows)
        {
            //Ca fonctionne
        }
    }
    catch (Exception e)
    {
        System.Diagnostics.Debug.WriteLine(e.ToString());
    }
    // Fermeture reader
    myReader.Close();
    // Fermeture de la connection
    connection.Close();
    Et ensuite si cela fonctionne alors je testerais le datagrid.

Discussions similaires

  1. WebPart pour SharePoint 2007
    Par y-bab dans le forum Développement Sharepoint
    Réponses: 4
    Dernier message: 28/05/2010, 15h14
  2. visibilité du code de connection à la database
    Par bris dans le forum Débuter
    Réponses: 4
    Dernier message: 27/02/2006, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo