2009-06-09 4 views
0

J'ai ajouté une base de données fortement typée (MySQl) à un projet C# (.net 3.5). La base de données (DB.Electrophysiology_Data) a plusieurs tables relationnelles mais je veux simplement ajouter un nouveau 'filesRow' à la table 'files'. J'utilise quelque chose comme le code suivant.Comment obtenir un AutoNumber de DataTable AutoIncrementColumn avec une base de données fortement typée en C#?

DB.Electrophysiology_Data.filesRow new_file = ds.files.NewfilesRow(); 

... définir les valeurs pour le new_file (par exemple, le nom de fichier, etc creationdate)

ds.files.AddfilesRow(new_file); 

... suite mettre à jour la base de données via un DataAdaptor

file_adaptor.Update(ds.files) 

Le Le problème est que la colonne AutoIncrement (FileID) est définie sur -1. Après avoir fermé mon application et redémarré, je vois le nouveau filesRow est ajouté à la base de données ok et a maintenant une valeur FileID appropriée (environ 5000, car j'ai déjà à peu près autant de lignes dans les fichiers DataTable).

Existe-t-il un moyen de connaître la valeur FileID définie par la base de données à l'aide des objets de base de données Strong-typed (DataSet, DataTable, etc.).

Merci pour toute aide, pete

Répondre

1

Pour adaptateur pour récupérer un code généré automatiquement à partir de la base de données juste après que vous avez inséré un nouveau record, vous devez effectuer SELECT.

Mon SQL Vous pouvez récupérer la dernière valeur AUTO_INCREMENT avec le LAST_INSERT_ID() fonction SQL

Si l'Assistant Configuration de la requête dans les ensembles de données Stong typé ne peut pas générer une requête pour MySQL de manière appropriée, vous pouvez modifier INSERT commande et ajouter manuellement clause SELECT ici Habituellement, si vous la commande ressemble à

insert my_table (field1, field2, ...) values (@field1, @field2, ...) 
select id, field1, field2 ... from my_table where id = LAST_INSERT_ID() 

comme vous le voyez, nous devons non seulement sélectionner ID mais d'autres domaines aussi afin d'obtenir les dernières valeurs de la table (qui peut être différent des valeurs de l'ensemble de données s'il existe des valeurs par défaut).

Questions connexes