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

edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 20 nov. 2014 à 13:27 - Dernière réponse : edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

13 réponses

jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 20 nov. 2014 à 13:33
0
Merci
Bonjour
et quel code as tu essayé ?
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 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..."
BasicInstinct - 20 nov. 2014 à 16:33
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.
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 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
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 20 nov. 2014 à 17:26
Tu Peux nous donner la structure de ta table ?
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 20 nov. 2014 à 17:34
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 ! ^^
Commenter la réponse de jordane45
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 20 nov. 2014 à 21:11
0
Merci
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 !
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 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
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)
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 25 nov. 2014 à 01:38
Merci, je vais y regarder
Commenter la réponse de edwinzap

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.