Je dois générer automatiquement un nouvel ID de compte sur mon application de formulaire de fenêtres de chargement. Ainsi, par exemple, lorsque les utilisateurs démarrent des fenêtres sous la forme "Ajouter un nouveau compte" dans la zone de texte "Identifiant du compte", je dois montrer la dernière valeur de la base de données. Si j'ai deux comptes dans la base de données sur Windows forme dans la valeur de la zone de texte sera trois.C# Générer un nouvel ID à partir de la base de données sous Windows forms application
Mon code fonctionne parfaitement si j'ai au moins un compte dans la base de données, mais quand ma base de données est vide j'ai eu une exception.
Ceci est mon code:
public int GetLatestAccountID()
{
try
{
command.CommandText = "select Max(AccountID)as maxID from Account";
command.CommandType = CommandType.Text;
connection.Open();
OleDbDataReader reader= command.ExecuteReader();
if (reader.Read())
{
int valueID = Convert.ToInt32(reader["maxID"]);
return valueID + 1;
}
return 1;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (connection!= null)
{
connection.Close();
}
}
}
Aussi je trouve réponse sur StackOverflow:
object aa = DBNull.Value;
int valueID = (aa as int?).GetValueOrDefault();
Mais cette ligne de code fonctionne si ma base de données est vide, mais quand j'ai un compte dans la base de données, il apparaîtra toujours sur mon formulaire Windows dans l'ID de compte textbox valeur un. J'utilise la base de données Microsoft Access 2007.
J'apprécie toute aide.
Cela fait un certain temps mais 'ExecuteScalar' aidera au lieu de' ExecuteReader'. – shahkalpesh
Oh, bonne idée @shahkalpesh! Édité. –
Ça marche! Merci beaucoup!! Oui, c'est ma clé primaire, mais dans la base de données, je choisis d'être numéro, pas numéro automatique. –