Bonjour bonjour !
Voila j'ai un petit pb... J'possède vb.net 2002 et j'ai trouvé le tutorial du SDK (QuickStart) très très bien... Je me suis intéréssé de près à la rubrique "Accès aux données côté serveur" et j'ai donc découvert le moyen de lire et enregistrer des donnés sur une bdd SQL...
C là qu'intervient mon pb. Il m'est impossible d'enregistrer ! Message : "Impossible d'ajouter l'enregistrement, vérifiez que les champs sont correctement remplis".
Bien sûr je pourrais utiliser "l'éxplorateur de serveur" mais ma version de visual basic.net (Standard) ne me permet pas de me connecter à des bdd SQL distantes (alors qu'avec Webmatrix on peut et même modifier et ajouter des tables !!!!!).
Ainsi je peux lire des données dans un datagrid mais je ne peux pas les enregistrer ! Ca blok o niveau de la procedure "MyCommand.ExecuteNonQuery()" je pense.
Je vous met le code ci-dessous :
Protected Sub DataGrid5_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
MyConnection = New SqlConnection("server=db.europe.webmatrixhosting.net,1435;database=H_pulpysoft;user ID=mon_id;pwd=mon_mot_de_pass")
If Not (IsPostBack) Then
BindGrid()
End If
End Sub
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
AddHandler Load, AddressOf Me.DataGrid5_Load
AddHandler Me.Submit1.ServerClick, AddressOf Me.AddAuthor_Click
End Sub
Sub AddAuthor_Click(ByVal Sender As Object, ByVal E As EventArgs)
Message.InnerHtml = ""
If (Page.IsValid) Then
Dim DS As DataSet
Dim MyCommand As SqlCommand
Dim InsertCmd As String = "insert into Authors (au_id, au_lname, au_fname, phone, address, city, state, zip, contract) values (@Id, @LName, @FName, @Phone, @Address, @City, @State, @Zip, @Contract)"
MyCommand = New SqlCommand(InsertCmd, MyConnection)
MyCommand.Parameters.Add(New SqlParameter("@Id", SqlDbType.NVarChar, 11))
MyCommand.Parameters("@Id").Value = au_id.Value
MyCommand.Parameters.Add(New SqlParameter("@LName", SqlDbType.NVarChar, 40))
MyCommand.Parameters("@LName").Value = au_lname.Value
MyCommand.Parameters.Add(New SqlParameter("@FName", SqlDbType.NVarChar, 20))
MyCommand.Parameters("@FName").Value = au_fname.Value
MyCommand.Parameters.Add(New SqlParameter("@Phone", SqlDbType.NChar, 12))
MyCommand.Parameters("@Phone").Value = phone.Value
MyCommand.Parameters.Add(New SqlParameter("@Address", SqlDbType.NVarChar, 40))
MyCommand.Parameters("@Address").Value = address.Value
MyCommand.Parameters.Add(New SqlParameter("@City", SqlDbType.NVarChar, 20))
MyCommand.Parameters("@City").Value = city.Value
MyCommand.Parameters.Add(New SqlParameter("@State", SqlDbType.NChar, 2))
MyCommand.Parameters("@State").Value = stateabbr.Value
MyCommand.Parameters.Add(New SqlParameter("@Zip", SqlDbType.NChar, 5))
MyCommand.Parameters("@Zip").Value = zip.Value
MyCommand.Parameters.Add(New SqlParameter("@Contract", SqlDbType.NVarChar, 1))
MyCommand.Parameters("@Contract").Value = contract.Value
MyCommand.Connection.Open()
Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>Enregistrement ajouté</b><br>" & InsertCmd.ToString()
Catch Exp As SQLException
If Exp.Number = 2627 Then
Message.InnerHtml = "ERREUR : Un enregistrement avec la même clé primaire existe déjà"
Else
Message.InnerHtml = "ERREUR : Impossible d'ajouter l'enregistrement, vérifiez que les champs sont correctement remplis"
End If
Message.Style("couleur") = "red"
End Try
MyCommand.Connection.Close()
End If
BindGrid()
End Sub
Sub BindGrid()
Dim DS As DataSet
Dim MyCommand As SqlDataAdapter
MyCommand = New SqlDataAdapter("select * from Test", MyConnection)
DS = New DataSet()
MyCommand.Fill(DS, "Test")
MyDataGrid.DataSource = DS.Tables("Test").DefaultView
MyDataGrid.DataBind()
End Sub
End Class
Merci de votre aide...
Ju