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

VB.NET Discussion :

erreur requete SQL [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut erreur requete SQL
    Bonsoir le forum,

    je fais mes premiers pas en VB 2010, j'ai fait une peitte "form" avec un bouton qui va remplir une listbox depuis une table mySQL, la connexion marche bien.
    mon problème se situe sur ma requête SQL, probablement la syntaxe mais je ne vois pas où...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom, prenom, DN FROM table_test WHERE nom LIKE '" & TextBox1.Text & "%' ORDER by nom ASC;
    génère l'erreur:
    Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : La référence d'objet n'est pas définie à une instance d'un objet.
    alors que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom, prenom, DN FROM table_test ORDER by nom ASC;
    fonctionne parfaitement...

    Voici le code intégral:
    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
     
     
    Imports MySql.Data.MySqlClient
    Public Class Form1
        Dim con As MySqlConnection = New MySqlConnection("Data Source=127.0.0.1;Database=connexion_excel;User ID=filou;Password=coucoucelui;")
     
        'Dim sql As MySqlCommand = New MySqlCommand("SELECT nom, prenom, DN FROM table_test ORDER by nom ASC;", con)
        'Dim a As String = TextBox1.Text
        Dim sql As MySqlCommand = New MySqlCommand("SELECT nom, prenom, DN FROM table_test WHERE nom LIKE '" & TextBox1.Text & "%' ORDER by nom ASC;", con)
     
        Dim ds As DataSet = New DataSet()
        Dim DataAdapter1 As MySqlDataAdapter = New MySqlDataAdapter()
        Dim Comb As MySqlCommandBuilder
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ListBox1.Items.Clear()
            con.Open()
            Dim reader As MySqlDataReader
            reader = sql.ExecuteReader()
     
            While reader.Read()
                ListBox1.Items.Add(reader.GetString("nom") & " " & _
                    reader.GetString("prenom") & " " & reader.GetString("DN"))
            End While
     
            reader.Close()
            con.Close()
        End Sub
     
     
    End Class
    Merci d'avance pour votre aide

    A+
    Philippe

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim sql As MySqlCommand = New MySqlCommand("SELECT nom, prenom, DN FROM table_test WHERE nom LIKE '" & TextBox1.Text & "%' ORDER by nom ASC;", con)
    Cette ligne est exécutée avant le constructeur, donc avant l'appel à InitializeComponent, donc à ce moment TextBox1 n'est pas encore créé... Initialise ta requête plus tard, juste avant de l'exécuter par exemple, et ça passera.

    D'autre part, évite de construire une requête en concaténant du texte que tu ne maitrises pas, tu t'exposes à une attaque par injection SQL (sans compter les problèmes avec les apostrophes, les problèmes de format de nombre et de date, etc). Utilise des requêtes paramétrées.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Par défaut
    Merci beaucoup,
    en effet ça marche.

    Je tiens compte de ta remarque et je me brieffe sur les requêtes paramétrées et les injections SQL.

    A très bientôt sans doute pour d'autres questions.

    Bonne journée.

    A+
    Philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Erreur requete SQL
    Par rems033 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/02/2008, 20h30
  2. erreur requete sql
    Par Ksimo dans le forum SQL
    Réponses: 4
    Dernier message: 11/12/2007, 13h28
  3. Erreur requete SQL
    Par poipoipo dans le forum Administration
    Réponses: 1
    Dernier message: 16/03/2007, 22h00
  4. erreur requete sql
    Par mohamed_75 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/02/2007, 14h20
  5. Erreur requete SQL/Access
    Par polianita dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/06/2006, 15h20

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