Les Allergies
Alimentaires
Posez votre question Signaler

[vb.net/sql] insertion de données

Doom_aok 46Messages postés 1 juin 2007Date d'inscription - Dernière réponse le 29 avril 2010 à 19:27
Bonjour,
je veux inserer des données à partir d'un formulaire windows crée en vb
voila mon code
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common.DbCommand
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New SqlConnection
con.ConnectionString = ("data source=.;initial catalog=Commerce;Integrated Security=SSPI")
con.Open()
(**) Dim cmd As New SqlCommand("insert client values"(Me.TextBox1.Text & ", " & Me.TextBox2.Text & ", " & Me.TextBox3.Text & ", " & Me.TextBox4.Text & ", " & Me.TextBox5.Text), con)
Dim affectedrows As Integer = cmd.ExecuteNonQuery()
con.Close()
End Sub
End Class
kan j'execute j'ai cette exception au niveau de la ligne (**)
La conversion de la chaîne ", , , , " en type 'Integer' n'est pas valide
je ne sais pas vraiment ce que je dois faire dans ce cas
j'espere que vous allez m'aider a trouver l'erreur
merci d'avance
Lire la suite 

[vb.net/sql] insertion de données »

6 réponses
Réponse
+5
moins plus
tu dois utiliser des quote ' pour entourer tes chaines de caractères en SQL (attention pas pour les entiers)

Dim cmd As New SqlCommand("insert client values('"Me.TextBox1.Text & "', '" & Me.TextBox2.Text & "', '" & Me.TextBox3.Text & "','" & Me.TextBox4.Text & "', '" & Me.TextBox5.Text) & "'", con)

n'oublie pas de vérifier de doubler dans le champ de tes textbox les quote aussi
exemple de fonction pour vérifier :

Public Function text_to_SQL(ByVal text As String) As String
Return Replace(text, "'", "''")
End Function

résultat :

Dim cmd As New SqlCommand("insert client values('" & text_to_SQL(Me.TextBox1.Text) & "', '" & text_to_SQL(Me.TextBox2.Text) & "', '" & text_to_SQL(Me.TextBox3.Text) & "','" & text_to_SQL(Me.TextBox4.Text) & "', '" & text_to_SQL(Me.TextBox5.Text)) & "'", con)

Sergio
Ajouter un commentaire
Réponse
+5
moins plus
ya aussi une erreur dans la requete "insert client values..."
insert into client...
Karouma - 12 mars 2009 à 20:00
j'ai un gros pb avec l'insertion
'voici mon bouton qui permet d'ajouter un personnel a la table personnel de la BD sql server 2005

Private Sub Enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enregistrer.Click
Nom = T1.Text
Prenom = T2.Text
Date_naiss = T3.Text
Sexe = T4.Text
CIN = T5.Text

Sit_fami = T6.Text
Date_effet = T7.Text
Nom_jeune_fille = T8.Text
Nationnalite = T9.Text

Num_pass = T10.Text

Try

cnx.ConnectionString = ConfigurationManager.ConnectionStrings("DBConnectionString").ToString

cnx.Open()
Dim cmd As New SqlCommand
cmd.CommandType = System.Data.CommandType.Text
cmd.Connection = cnx
Dim cmd_compt As New SqlCommand
cmd_compt.CommandType = System.Data.CommandType.Text
cmd_compt.Connection = cnx
cmd_compt.CommandText = "select max(Id_pers) AS max from Personnel"
Dim read_compt As SqlDataReader
read_compt = cmd_compt.ExecuteReader()
read_compt.Read()
Dim max As Integer = read_compt.Item(0)
max = max + 1
read_compt.Close()

MsgBox(max)

'**************************************************
Dim strRequete As String = "INSERT INTO Personnel(Id_pers, CIN, Sexe, Sit_fami, Date_effet, Nom_fami, Prenom, Nom_jeune_fille , Date_naiss, Nationnalite, Num_pass) VALUES (@Id_pers, @CIN, @Sexe, @Sit_fami, @Date_effet, @Nom_fami, @Prenom, @Nom_jeune_fille , @Date_naiss, @Nationnalite, @Num_pass)"

Dim oSqlDataAdapter As New SqlDataAdapter(strRequete, cnx)
Dim oDataSet As New DataSet("Personnel")
oSqlDataAdapter.Fill(oDataSet, "Personnel")
Dim i As Integer
For i = 0 To (oDataSet.Tables("Personnel").Rows.Count) - 1
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}", oDataSet.Tables("Personnel").Rows(i)(0).ToString(), oDataSet.Tables("Personnel").Rows(i)(1).ToString())
Next i
Console.WriteLine(ControlChars.Lf)
' Remplissage de la commande InsetCommand
oSqlDataAdapter.InsertCommand = New SqlCommand("INSERT INTO Personnel(Id_pers, CIN, Sexe, Sit_fami, Date_effet, Nom_fami, Prenom, Nom_jeune_fille , Date_naiss, Nationnalite, Num_pass) VALUES (@Id_pers, @CIN, @Sexe, @Sit_fami, @Date_effet, @Nom_fami, @Prenom, @Nom_jeune_fille , @Date_naiss, @Nationnalite, @Num_pass)", cnx)

oSqlDataAdapter.InsertCommand.Parameters.Add("@Id_pers", SqlDbType.Int, 4, "Id_pers")
oSqlDataAdapter.InsertCommand.Parameters.Add("@CIN", SqlDbType.Int, 4, "CIN")

oSqlDataAdapter.InsertCommand.Parameters.Add("@Sexe", SqlDbType.VarChar, 5, "Sexe")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Sit_fami", SqlDbType.VarChar, 15, "Sit_fami")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Date_effet", SqlDbType.DateTime, 4, "Date_effet")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Nom_fami", SqlDbType.VarChar, 15, "Nom_fami")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Prenom", SqlDbType.VarChar, 15, "Prenom")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Nom_jeune_fille", SqlDbType.VarChar, 15, "Nom_jeune_fille")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Date_naiss", SqlDbType.DateTime, "Date_naiss")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Nationnalite", SqlDbType.VarChar, 20, "Nationnalite")
oSqlDataAdapter.InsertCommand.Parameters.Add("@Num_pass", SqlDbType.Int, 4, "Num_pass")

Dim oDataRow As DataRow
' Dim byteArray As Byte() = {&H0, &H0}

oDataRow = oDataSet.Tables("Personnel").NewRow()
oDataRow("Id_pers") = max
oDataRow("CIN") = CType(CIN, Integer)
oDataRow("Sexe") = T4.Text
oDataRow("Sit_fami") = T6.Text
oDataRow("Date_effet") = CType(Date_effet, DateTime)
oDataRow("Nom_fami") = T1.Text
oDataRow("Prenom") = T2.Text
oDataRow("Nom_jeune_fille") = T8.Text
oDataRow("Date_naiss") = CType(Date_naiss, DateTime)
oDataRow("Nationnalite") = T9.Text
oDataRow("Num_pass") = CType(Num_pass, Integer)


oDataSet.Tables("Personnel").Rows.Add(oDataRow)

' Mise à jour de la source de données à partir du DataSet
oSqlDataAdapter.Update(oDataSet, "Personnel")

' Rechargement des données de la source mise à jour
oDataSet.Clear()
oSqlDataAdapter.Fill(oDataSet, "Personnel")

' Affichage du contenu de oDataSet après insertion d'une ligne de données
Console.WriteLine(" *** Liste des catégories après la mise à jour *** ")
Dim ii As Integer
For ii = 0 To (oDataSet.Tables("Personnel").Rows.Count) - 1
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}", oDataSet.Tables("Personnel").Rows(ii)(0).ToString(), oDataSet.Tables("Personnel").Rows(ii)(1).ToString())
Next ii

cnx.Close()
'**************************************************
MsgBox("execution en cour")


' cmd.ExecuteNonQuery()
cnx.Dispose()



MsgBox("ajout réussi")
cnx.Close()
Catch ex As Exception
Console.WriteLine(ex.ToString())
cnx.Close()
End Try

End Sub

'le résultat de l'éxécution me donne:



Une exception de première chance de type 'System.FormatException' s'est produite dans mscorlib.dll
Une exception de première chance de type 'System.FormatException' s'est produite dans mscorlib.dll
Une exception de première chance de type 'System.FormatException' s'est produite dans mscorlib.dll
Une exception de première chance de type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
System.Data.SqlClient.SqlException: La variable scalaire "@Id_pers" doit être déclarée.
à System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
à System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
à System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
à System.Data.SqlClient.SqlDataReader.get_MetaData()
à System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
à System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
à System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
à System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
à System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
à PFE_GA.Form1.Enregistrer_Click(Object sender, EventArgs e) dans C:\Documents and Settings\ben_yahia\Mes documents\Visual Studio 2008\Projects\PFE_GA\PFE_GA\GUI\Form1.vb:ligne 96
'vraiment je n'ai pas pu résoudre ce pb
Ajouter un commentaire
Réponse
+0
moins plus
remplacez "Dim affectedrows As Integer = cmd.ExecuteNonQuery()" par cmd.ExecuteNonQuery()
Ajouter un commentaire
Réponse
+0
moins plus
stp j'ai un msg d'erreur et je parviens pas à me rectifier le msg est le suivant:
Le format de la chaine est incorrect
le voilà:
Dim cmd As New SqlCommand("insert into consultant values"(Convert.ToInt32(Me.id_consultant.Text) & ", '" & Me.nom.Text & "', '" & Me.prenom.Text & "', '" & Me.date_naiss.Text & "', '" & Me.lieu_naiss.Text & "', '" & Me.adresse.Text & "', " & Convert.ToInt32(Me.num_cni.Text) & ", '" & Me.statut.SelectedIndex & "', '" & Me.num_contrat.Text & "', '" & Me.num_ipres.Text & "', '" & Me.dure_contrat.Text & "', '" & Me.date_entre.Text & "', '" & Me.date_sortie.Text & "', " & Convert.ToInt32(Me.honoraire_brut.Text) & ", " & Me.prelevement_fiscal.SelectedIndex), con)
Ajouter un commentaire
Réponse
+0
moins plus
donc pour insérer le donnée dans la base de donnée a partir d'un formulaire

avec .net
Ajouter un commentaire
Ce document intitulé « [vb.net/sql] insertion de données » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?