[vb.net/sql] insertion de données
Doom_aok
Messages postés
46
Date d'inscription
Statut
Membre
Dernière intervention
-
ramzi -
ramzi -
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
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
A voir également:
- [vb.net/sql] insertion de données
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Insertion sommaire word - Guide
- Touche insertion clavier - Guide
- Insertion filigrane word - Guide
5 réponses
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
'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