Insert sql avec une colonne auto-increment [Résolu]

Signaler
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
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

Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
351
Bonjour
et quel code as tu essayé ?
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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..."
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.
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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
Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
351
Tu Peux nous donner la structure de ta table ?
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
Autant pour moi, je ne sais pas pourquoi mais ma colonne n'était plus en auto-incrémentation (identity). Je pense que c'est une MAJ de ma BDD que je n'ai sans doute pas faite.
En tout cas merci de prendre du temps pour aider les imbéciles comme moi ! ^^
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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 !
Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
351
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
http://www.mikesdotnetting.com/article/54/getting-the-identity-of-the-most-recently-added-record
//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)
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
Merci, je vais y regarder