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

Windows Forms Discussion :

[SQL][C#] Pas d'accès aux données d'une base SQL


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [SQL][C#] Pas d'accès aux données d'une base SQL
    Salut à tous !!

    Voilà, je développe depuis peu de temps sous Visual studio .net 2003 (à la base, je ne suis pas développeur, mais il faut bien un début à tout).
    Je vais essayer d'être clair et bref.
    Il s'agit d'une application en C# sur Pocket PC (tournant sous Windows 2003 SE) qui doit permettre d'enregistrer des données dans une base de données SQL. Cette base tourne sous SQL Server 2000 (édition standard), installé dans un XP Pro.

    1er problème (qui n'est peut-être pas si important que ça) : SQL Server 2000 est destiné aux systèmes serveurs du type Win 2000 server. Donc je ne peux installer que les composants clients sur mon XP pro.
    Bon, j'ai quand même installé SQL server et ma petite base, et fait mon appli.
    On y reviendra.

    2ème problème : Quand je lance mon appli C# sur un PDA, je ne peux pas accéder à la base SQL. Au chargement du 1er formulaire, je suis censé récupérer des données (noms d'opérateurs) de la base pour remplir une comboBox nommée cb_nom, mais a connexion ne se fait pas.
    Voici un petit bout du code :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    		private void frm_operateur_Load(object sender, System.EventArgs e)
    		{
    			SqlConnection cnx;
    			cnx = new SqlConnection();
    			cnx.ConnectionString = "UID=asp;PWD=asppwd;Database=bdd_habillage_operateur;server=etiquetage;Timeout=9";
     
    			cb_nom.Items.Clear();
    			try 
    			{
     
     				SqlCommand cmd = new SqlCommand("SELECT num, nom FROM OPERATEUR" , cnx);
    				cnx.Open();
     
    				SqlDataAdapter ada = new SqlDataAdapter(cmd);
    				DataSet ds = new DataSet();
    				ada.Fill(ds);
     
    				// Remplissage de la liste opérateurs.
    				foreach (DataRow row in ds.Tables[0].Rows)
    					cb_nom.DataSource = ds.Tables[0]; 
     
    				cb_nom.ValueMember= "num"; //La liste garde en mémoire le numéro opérateur
    				cb_nom.DisplayMember= "nom"; // Et affiche le nom.
    			}
    			catch (InvalidOperationException ex) 
    			{MessageBox.Show(ex.Message);}
    			catch (SqlException ex) 
    			{MessageBox.Show(ex.Message);} 
    			catch (Exception ex) 
    			{MessageBox.Show(ex.Message);}
     
    			finally
    			{cnx.Close();}
    		}
    La gestion d'erreur me renvoie le message d'exception suivant : "SQL server n'existe pas ou l'accès est refusé".
    Ce qui est bizarre, c'est que ce code fonctionne très bien lorsque la base est sur le PC sur lequel je développe (ce n'est pas lui qui est destiné à recevoir la base) : le PDA se conecte à mon PC, mais pas au PC nommé Etiquetage qui a la base SQL Server 2000 installé en client.

    C'est là que vous me dîtes que c'est normal, le PC Etiquetage est un XP Pro qui ne possède pas les composants serveurs de SQL Server 2000.


    Et ben c'est pas fini.
    J'ai fait un petit test avec une mini appli en VB qui depuis mon PC perso doit se connecter, de la même façon que devrait le faire le PDA, au PC Etiquetage.
    Et ben la, ça marche !
    Voici un petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    		Dim cnx As SqlConnection
    		Dim cmd As SqlCommand
    		Dim reader As SqlDataReader
    		cnx = New SqlConnection("UID=asp;PWD=asppwd;Database=bdd_habillage_operateur;server=ETIQUETAGE;Timeout=9")
    		cnx.Open()
    		cmd = cnx.CreateCommand()
    		cmd.CommandText = "SELECT DISTINCT Max(MILLESIME) FROM ORDREFAB"
    		reader = cmd.ExecuteReader()
    		reader.Read()
    		MsgBox(reader.GetInt16(0))
    		reader.Close()
    	End Sub
    Le résultat de la requête s'effectue correctement et me renvoie le bon résultat, qu'elle est allé chercher dans la bonne base...


    Et là, je ne comprend pas d'où vient le 2ème problème ("SQL server n'existe pas ou l'accès est refusé")
    Le code semble bon (j'en suis pas sûr, vu que je débute en C#), la connection string est la même...


    Quelqu'un aurait-il une petite idée, ou une piste ?


    Merci d'avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Essaye de mettre l'adresse ip à la place de ETIQUETAGE, pour voir si ca provient de la déjà.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de me répondre aussi rapidement.

    J'ai essayé de remplacé le nom par l'adresse IP, suivie ou non de ",1433" pour lui indiquer le port utilisé par SQL Server, mais ça ne marche pas.

    J'ai aussi cherché du côté de ma chaîne de connexion (en vérifiant les différentes possibilités sur connectionstrings, mais toujours rien...

    A un moment, j'ai pensé que le problème pouvait venir des PDA et de l'application en C# pour PDA (compact framework). Mais apparemment non : les PDA peuvent accéder à un dossier partagé d'ETIQUETAGE, et surtout, j'avais développé une autre appli en asp.net sur ETIQUETAGE, et cette appli fonctionne très bien si elle est installée avec la base sur ETIQUETAGE, mais ne fonctionne pas si la base de données reste sur ce PC mais que l'appli est installée sur mon PC perso. D'ailleurs, l'appli asp.net marche quand même si elle est installée sur ETIQUETAGE, et la base sur mon PC perso....
    J'espère que vous suivez encore.

    C'est à s'en arracher les cheveux

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Finalement, j'ai cherché pendant un moment, et je pense qu'on ne peut tout simplement pas faire fonctionner SQL Server 2000 (ou difficilement alors) correctement s'il est installé sans les composant serveurs (ce qui est le cas sous XP pro) avec une application qui se connecte à distance.

    Bon, c'est ce que j'en conclue, je me trompe peut-être vue que mon petit test en VB ça marchait, mais j'ai jamais réussi à faire marcher mon code en C#.

    Finalement, je me suis trouvé une licence Windows 2000 Server, j'ai installé SQL 2000 Server avec les composants serveur, et tout fonctionne correctement.

    Merci pour votre aide.

Discussions similaires

  1. [WB17] Accèder aux données d'une base SQL Server avec Webdev
    Par Biyoum dans le forum WebDev
    Réponses: 8
    Dernier message: 07/10/2014, 11h30
  2. Réponses: 8
    Dernier message: 12/05/2014, 18h46
  3. Pas d'accès aux données sur téléphone
    Par Willy55 dans le forum Android
    Réponses: 7
    Dernier message: 30/05/2012, 15h32
  4. [AC-2003] Limiter l'accès aux données d'une base via mot de passe
    Par wolfens77 dans le forum Sécurité
    Réponses: 1
    Dernier message: 10/02/2012, 15h37
  5. [débutant] avoir accès aux données de la base BCDI 3
    Par Valichou dans le forum Bases de données
    Réponses: 7
    Dernier message: 06/05/2004, 13h13

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