2009-10-11 5 views
0

Je dois exécuter une requête SQL à l'aide d'une valeur de texte dans une étiquette, puis exécuter cette requête et lier des données à un gridview. Voici mon code dans VB.netASP.net en utilisant label.Text dans une requête de sélection

Dim myConnection As SqlConnection = New SqlConnection 

Dim ad As New SqlDataAdapter 

Dim details As New DataSet 

Dim detailcmd As New SqlCommand("select student_name,student_id from students where student_name = '" + snamelabel.Text + "'", myConnection) 


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    ad.SelectCommand = detailcmd 
    myConnection.ConnectionString = "Data Source=USER-PC\SQLEXPRESS;Initial Catalog=students;Integrated Security=True" 
    myConnection.Open() 
    ad.Fill(details, "Details") 
    myConnection.Close() 

    DetailGridView.DataSource = details 
    DetailGridView.DataBind() 
End Sub 

Je reçois le message d'erreur suivant pour la SqlCommand --->

Object reference not set to an instance of an object. 

les données sont obligatoires pour la vue grille correcte?

Des idées?

Répondre

1

1- Cette ligne provoquera l'injection SQL dans le futur.

Dim detailcmd As New SqlCommand(
"select student_name,student_id from students where student_name = '" 
+ snamelabel.Text + "'", myConnection) 

2- Pas besoin d'ouvrir/fermer la connexion lorsque l'utilisation des données .. adaptateur

3- Je pense que l'erreur parce que vous initialisez la commande dans la classe essayez le déplacer à l'événement de chargement de la page.

+0

cela a fonctionné merci beaucoup! –

Questions connexes