Insert en C# avec SQLCommand
Quelle est la meilleure façon d'INSÉRER des données dans une base de données?
C'est ce que j'ai, mais c'est faux..
cmd.CommandText = "INSERT INTO klant(klant_id,naam,voornaam) VALUES(@param1,@param2,@param3)";
cmd.Parameters.Add(new SqlParameter("@param1", klantId));
cmd.Parameters.Add(new SqlParameter("@param2", klantNaam));
cmd.Parameters.Add(new SqlParameter("@param3", klantVoornaam));
La fonction ajouter des données dans la zone de liste
http://www.pictourl.com/viewer/37e4edcf (link is dead)
mais pas dans la base de données..
http://www.pictourl.com/viewer/4d5721fc (link is dead)
La fonction complète:
private void Form1_Load(object sender, EventArgs e)
{
conn2 = new SqlConnection();
conn2.ConnectionString = ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString;
}
private void button2_Click(object sender, EventArgs e)
{
string sqlCmd = "SELECT naam,voornaam,klant_id FROM klant;";
SqlCommand cmd = new SqlCommand(sqlCmd, conn2);
conn2.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
listBox2.Items.Add(reader.GetString(0) + " " + reader.GetString(1) + " (" + reader.GetInt16(2) + ")");
}
}
conn2.Close();
}
private void button4_Click(object sender, EventArgs e)
{
int klantId = Convert.ToInt32(textBox1.Text);
string klantNaam = textBox2.Text;
string klantVoornaam = textBox3.Text;
conn2.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn2;
cmd.CommandText = "INSERT INTO klant(klant_id, naam, voornaam) VALUES(@param1,@param2,@param3)";
cmd.Parameters.AddWithValue("@param1", klantId);
cmd.Parameters.AddWithValue("@param2", klantNaam);
cmd.Parameters.AddWithValue("@param3", klantVoornaam);
cmd.ExecuteNonQuery();
conn2.Close();
}
"C'est faux" est aussi vague que vous le pouvez au sujet de ce qui se passe. Veuillez expliquer ce que vous êtes en train d'observer. Notez que vous ne devez en fait execute la commande...
Pouvez-vous donner plus de détails? Que voulez-vous dire que c'est mal?
Cette est double d'une question qui a déjà été fermé. Et cela ne fonctionne toujours pas même avoir un essai bloc catch qui a été le premier commentaire dans la question fermée.
Votre question est essentiellement la même qu'avant: stackoverflow.com/questions/12936345/listbox-and-database-issue. Même code, et le même manque de précision quant à ce que vous demandez. Je vous conseille peut-être penser que c'est comme si l'écriture d'un rapport de bogue: ce qui se passe avec votre code, ce que vous aimeriez, et où/comment vous voyez le problème.
Donc ce n'est pas le code? Je parie ExecuteNonQuery lever une exception ou retourne la valeur 0. Votre code zéro n'vérification d'erreur. -1
Pouvez-vous donner plus de détails? Que voulez-vous dire que c'est mal?
Cette est double d'une question qui a déjà été fermé. Et cela ne fonctionne toujours pas même avoir un essai bloc catch qui a été le premier commentaire dans la question fermée.
Votre question est essentiellement la même qu'avant: stackoverflow.com/questions/12936345/listbox-and-database-issue. Même code, et le même manque de précision quant à ce que vous demandez. Je vous conseille peut-être penser que c'est comme si l'écriture d'un rapport de bogue: ce qui se passe avec votre code, ce que vous aimeriez, et où/comment vous voyez le problème.
Donc ce n'est pas le code? Je parie ExecuteNonQuery lever une exception ou retourne la valeur 0. Votre code zéro n'vérification d'erreur. -1
OriginalL'auteur KevinDW | 2012-10-17
Vous devez vous connecter pour publier un commentaire.
Essayer de confirmer le type de données (SqlDbType) pour chaque paramètre dans la base de données et faire de cette façon;
Dans le Form_Load: conn2 = new SqlConnection(); conn2.ConnectionString = ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString; ?
OriginalL'auteur Oluwafemi
vous pouvez utiliser la conversion implicite
AddWithValue
exemple de code,
avez-vous appeler
cmd.ExecuteNonQuery();
?Oui, j'ai ajouté le code complet
pouvez-vous créer une autre instance de votre connexion? voir ma réponse mis à jour.
OriginalL'auteur John Woo
OriginalL'auteur Gene S
Vous pouvez utiliser dapper bibliothèque:
BTW Dapper est un Débordement de la Pile de projet 🙂
Mise à JOUR: je crois que vous ne pouvez pas faire plus simple sans quelque chose comme EF. Aussi, essayez de
using
états lorsque vous travaillez avec des connexions de base de données. Cela permet de fermer automatiquement la connexion, même en cas d'exception. Et une connexion sera retourné à pool de connexions.OriginalL'auteur Sergey Berezovskiy
Vous devriez éviter de coder en dur les instructions SQL dans votre application. Si vous n'utilisez pas ADO, ni EntityFramework, je vous suggère à l'annonce d'une procédure stockée dans la base de données et l'appeler à partir de votre application en c#. Un exemple de code peut être trouvé ici: Comment faire pour exécuter une procédure stockée à l'intérieur de programme C# et ici http://msdn.microsoft.com/en-us/library/ms171921%28v=vs.80%29.aspx.
OriginalL'auteur Lukasz M
Utilisation
AddWithValue()
, maisbe aware of the possibility of the wrong implicit type conversion
.comme ceci:
OriginalL'auteur Ravindra Bagale
OriginalL'auteur Danush Mohotti