Insert sql avec une colonne auto-increment

Résolu
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
- 20 nov. 2014 à 13:27
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
- 25 nov. 2014 à 01:38
Bonjour,
J'ai cherché partout et je ne trouve pas pourtant c'est simple j'en suis sûr.
J'ai une colonne de clé primaire avec incrémentation auto et je n'arrive pas à faire un insert !

Merci

2 réponses

jordane45
Messages postés
35769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
358
20 nov. 2014 à 13:33
Bonjour
et quel code as tu essayé ?
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
20 nov. 2014 à 14:10
        private void btn_ajouter_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(global::Mail.Properties.Settings.Default.ContactsConnectionString);

try
{

string sql = "INSERT INTO Contact (Id_contact,Name_contact, Firstname_contact) values(??,'" +txtbx_nom.Text+"','" +txtbx_prenom.Text"')";
SqlCommand cmd = new SqlCommand(sql, con);


con.Open();
cmd.ExecuteNonQuery();

this.contactTableAdapter.Fill(this.contactsDataSet.Contact);

MessageBox.Show("Le contact a été ajouté avec succès!", "Ajouter un contact", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
0
jordane45
Messages postés
35769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
358
20 nov. 2014 à 14:49
Si id_contact est auto incrémenté. ..tu n'as pas à le mettre dans ton insert...
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
20 nov. 2014 à 15:50
C'est ce que je me suis dit mais j'ai l'erreur suivante si je ne mets rien:
"Cannot insert the value NULL into column Id_contact..."
0
INSERT INTO Table (Champ1,Champ2...) 
               values (V1,V2...)


Pas de déclaration de l'autoincrement dans la requête. Comme si le champs n'existait pas.
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
20 nov. 2014 à 16:41
C'est ce que j'ai fais:
string sql = "INSERT INTO Contact (Name_contact, Firstname_contact) values('" +txtbx_nom.Text+"','" +txtbx_prenom.Text+"')";

Mais ça ne fonctionne pas
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
20 nov. 2014 à 21:11
Par contre, avec cette colonne auto-increment, comment dois-je faire ma requête sql pour insérer dans la table enfant??
Exemple:
j'ai une table 'contact' avec "nom", "prenom", "ID_ville" et j'ai une autre table 'ville' avec "ID" (auto increment), "Ville".
D'avance merci, je cherche depuis un bout de temps et n'ai jamais d'explication valable !
0
jordane45
Messages postés
35769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
358
20 nov. 2014 à 21:25
Lorsque tu ajoutes dans ta première table... le champ auto incrémenté..ben.. s'incrémente...
Tu dois donc, une fois l' INSERT réalisé.. récupérer le numéro de l'id généré.
Ainsi.. tu pourras ensuite l'utiliser pour ton autre table....

Sous Mysql par exemple, tu peux utiliser :
http://php.net/manual/fr/function.mysql-insert-id.php

Sous SqlServer tu as @@IDENTITY par exemple :
http://php.net/manual/fr/function.mysql-insert-id.php

Et sinon.. au pire.. tu fais une requête sur le MAX(id) du type :
SELECT MAX(ID) 
FROM Ville
0
http://www.mikesdotnetting.com/article/54/getting-the-identity-of-the-most-recently-added-record
0
//C#
string query = "Insert Into Categories (CategoryName) Values (?)";

string query2 = "Select @@Identity";

int ID;

string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Northwind.mdb";

using (OleDbConnection conn = new OleDbConnection(connect))

{

  using (OleDbCommand cmd = new OleDbCommand(query, conn))

  {

    cmd.Parameters.AddWithValue("", Category.Text);

    conn.Open();

    cmd.ExecuteNonQuery();

    cmd.CommandText = query2;

    ID = (int)cmd.ExecuteScalar();

  }

}


EDIT : Ajout des balises de code (jordane)
0
edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
25 nov. 2014 à 01:38
Merci, je vais y regarder
0