none
problème de dr=cmd.executeNonQuery RRS feed

  • Discussion générale

  • Imports System.Data.SqlClient
    Partial Public Class pageModification
        Inherits System.Web.UI.Page
        Dim cn As New SqlConnection("data source=.;initial catalog=Personnes;integrated security=true")
        Dim cmd As New SqlCommand
        Dim req As String
        Dim dr As SqlDataReader
        Dim total As Integer
        Dim i As Integer
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            btnModifier.Enabled = False
            cn.Open()
            cmd.Connection = cn
            req = "select * from stagiaires"
            cmd.CommandType = CommandType.Text
            cmd.CommandText = req
            dr = cmd.ExecuteReader
            i = 0
            If dr.HasRows Then
                If Not Page.IsPostBack Then
                    While dr.Read
                        lstCode.Items.Add(dr(0))
                    End While
                End If
            Else
                MsgBox("La tabe est vide !!")
            End If
            dr.Close()
        End Sub
        Private Sub lstCode_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstCode.SelectedIndexChanged
            Dim p As New SqlParameter("@id", SqlDbType.Int)
            cmd.Parameters.Add("@id", SqlDbType.Int)
            cmd.Parameters.Item("@id").Value = lstCode.SelectedValue
            req = "select nom , prenom from stagiaires where id=@id "
            cmd.CommandText = req
            dr = cmd.ExecuteReader
            While dr.Read
                txtNom.Text = dr("nom").ToString
                txtPrenom.Text = dr("prenom").ToString
            End While
            btnModifier.Enabled = True
            dr.Close()
        End Sub
        Protected Sub btnModifier_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnModifier.Click
            Dim p As New SqlParameter("@id", SqlDbType.Int)
            cmd.Parameters.Add("@id", SqlDbType.Int)
            cmd.Parameters.Item("@id").Value = lstCode.SelectedValue
            req = "update stagiaires set nom='" & txtNom.Text & "' where id=@id"
            cmd.CommandText = req
            dr = cmd.ExecuteNonQuery
        End Sub
    End Class

    lundi 19 mars 2012 03:30

Toutes les réponses

  • Salut

    tu as un dr de type sqldatareader or

    ExecuteNoQuery est une action de modification et non de lecture alors on ne peut pas l'assigner a ton dr

    il faut simplement faire

    cmd.ExecuteNonQuery()

    Pour les instructions UPDATE, INSERT et DELETE, les valeurs de retour représentent le nombre de lignes affectées par la commande. Pour tous les autres types d'instructions, la valeur de retour est -1. En cas d'annulation, la valeur de retour est la même -1.

    Cordialement


    la FOI déplace les montagnes et bien DOTNET les effaces complétement.

    lundi 19 mars 2012 08:37
  • Prochainement en posant un probleme explique un peu avant de mettre le code, et pense a mettre en rouge ou souligner le partie du code à probleme. Ca sera plus facile a comprendre, enfin change l'icone de ton probleme ce n'est pas une discussion c'est une question.

    Amicalement


    la FOI déplace les montagnes et bien DOTNET les effaces complétement.

    lundi 19 mars 2012 08:42
  • j'ajouterais un point important : ne pas déclarer de SqlConnection et/ou SqlCommand comme variable de la classe.

    De plus, vous ouvrez la connection sans la libérer : votre serveur SQL va être à genou si il y a du trafic sur votre site ;-)

    Bref, quand vous avez une connection à une base a effectuer, le bon template est de faire :

    Private Sub MonEvent(sender as Object, e as EventArgs)
         Dim conn as new SqlConnection(ConnectionString)
         Dim comm as new SqlCommand(maCommande, conn)
    conn.Open()
         'exécution de votre command avec ExecuteQuery ou ExecuteNonQuery
         comm.Dispose()
         conn.Close() 'ou Dispose()
    End Sub



    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mardi 20 mars 2012 08:42