Précédent   Forum des professionnels en informatique > Dotnet > Langages > VB.NET
VB.NET Forum d'entraide sur la programmation Visual Basic .NET. Avant de poster -> FAQ VB.NET, Articles VB.NET, Sources VB.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 00h15   #1
Futur Membre du Club
 
Inscription : juin 2007
Messages : 68
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 68
Points : 18
Points : 18
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 :
SELECT nom, prenom, DN FROM table_test WHERE nom LIKE '" & TextBox1.Text & "%' ORDER by nom ASC;
génère l'erreur:
Citation:
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 :
SELECT nom, prenom, DN FROM table_test ORDER by nom ASC;
fonctionne parfaitement...

Voici le code intégral:
Code :
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
filtep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 00h48   #2
Responsable .NET
 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 16 748
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 30
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 : 16 748
Points : 26 738
Points : 26 738
Code :
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.
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Une visite guidée de WPF (traduction)
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !

Envie de contribuer à la rubrique .NET ?
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/02/2012, 10h13   #3
Futur Membre du Club
 
Inscription : juin 2007
Messages : 68
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 68
Points : 18
Points : 18
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
filtep est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h56.


 
 
 
 
Partenaires

Hébergement Web