J'ai une application C# qui utilise MySQL pour insérer des données dans une base de données. L'application insère parfois des données déjà présentes dans la base de données. Quel est le meilleur moyen de détecter s'il y a eu des erreurs dans ce cas?Comment détecter les erreurs SQL INSERT pour les données déjà dans la base de données?
Je comprends que ExecuteNonQuery()
renvoie le nombre de lignes affectées, donc si cela est supérieur à 0, cela peut être interprété comme une transaction réussie. Toutefois, si les données sont déjà dans la base de données, les lignes affectées sont 0, mais cela peut également être considéré comme une transaction réussie puisque les données sont dans la base de données.
string sql = @"INSERT my_table (field1, field2) VALUES (@value1, @value2);"
MySqlCommand cmd = new MySqlCommand(sql, connection);
// Execute
int rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected > 0)
{
// Query was successful
}
else
{
// Query *may* have been successful
}
Pas nécessairement une réponse à la question, mais peut-être une solution. Avez-vous envisagé d'utiliser un «UPSERT» à la place? https://dev.mysql.com/doc/refman/5.7/fr/insert-on-duplicate.html Cela pourrait vous retourner un nombre plus utile –
Utilisez l'instruction Select pour voir si l'enregistrement existe déjà dans le tableau, puis effectuez l'insertion, de cette façon, vous pouvez même éviter la vérification d'erreur. Ceci est juste une alternative pour votre cas. – Sujith