Je travaille sur un projet (non public) et j'essaie de mettre à jour mon code de base de données à l'aide d'ADO.NET. J'ai écrit le code de travail pour insérer, récupérer tout, récupérer par ID, et récupérer par statut, celui que je ne peux pas comprendre est la mise à jour. J'ai fait pas mal de recherches et le code que j'ai est représentatif des informations que j'ai trouvées et j'ai essayé de m'adapter à mon programme. J'utilise juste des données de poubelle pour essayer de voir la mise à jour avant d'utiliser n'importe quelle sorte de données tangibles.Mise à jour de plusieurs colonnes dans une ligne à l'aide d'ADO.NET
Ci-dessous est mon code de requête dans une classe dédiée aux requêtes.
public Ticket UpdateTicket(int id, string status, int customerId, int helpDeskStaffId, string problemDesc, string resolution, string followUpRequired, string followUpComplete, DateTime ticketDate, DateTime resolvedDate)
{
Ticket ticket = new Ticket(id, status, customerId, helpDeskStaffId, problemDesc, resolution, followUpRequired, followUpComplete, ticketDate, resolvedDate);
SqlCommand cmdInsert;
SqlConnection conn = null;
try
{
string connectString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
conn = new SqlConnection(connectString);
"UPDATE Ticket SET Status = @Status, HelpDeskStaffId = @HelpDeskStaffId, ProblemDesc = @ProblemDesc, Resolution = @Resolution, FollowUpRequired = @FollowUpRequired, FollowUpComplete = @FollowUpComplete, TicketDate = @TicketDate, ResolvedDate = @ResolvedDate, CustomerId = @CustomerId WHERE [email protected]";
conn.Open();
cmdInsert = new SqlCommand(sql2, conn);
cmdInsert.Parameters.AddWithValue("@id", id);
cmdInsert.Parameters.AddWithValue("@Status", status);
cmdInsert.Parameters.AddWithValue("@HelpDeskStaffId", helpDeskStaffId);
cmdInsert.Parameters.AddWithValue("@ProblemDesc", problemDesc);
cmdInsert.Parameters.AddWithValue("@Resolution", resolution);
cmdInsert.Parameters.AddWithValue("@FollowUpRequired", followUpRequired);
cmdInsert.Parameters.AddWithValue("@FollowUpComplete", followUpComplete);
cmdInsert.Parameters.AddWithValue("@TicketDate", ticketDate);
cmdInsert.Parameters.AddWithValue("@ResolvedDate", resolvedDate);
cmdInsert.Parameters.AddWithValue("@CustomerId", customerId);
}
catch (SqlException ex)
{
Console.Error.WriteLine(ex.Message);
}
finally
{
if (conn != null)
conn.Close();
}
return ticket;
}
Aucune donnée n'est mise à jour à l'intérieur de la ligne en corrélation avec l'ID saisi.
TicketUtil ticketUtil = new TicketUtil();
Ticket ticket = ticketUtil.UpdateTicket(6, "Open", 1, 3, "Broken Pencils", "Buy New One", "No", "No", DateTime.Today, new DateTime(1753, 1, 1));
Mon objectif final est de pouvoir coder une mise à jour à l'aide du code ci-dessus de cette ligne, et ensuite utiliser une console qui avec invites pour permettre la mise à jour des informations. Cependant, sans même être en mesure de coder en dur la solution, je ne peux même pas penser à la version d'entrée de l'utilisateur pour le moment.
Où êtes-vous * * exécutiez la commande? Vous semblez également mettre à jour avec la valeur existante + la nouvelle valeur? Est-ce vraiment ce que vous voulez faire? –
@alexK. Désolé, j'ai oublié de mentionner que l'exécution se déroule dans la classe Programme (pilote/principal). Je vois maintenant que les valeurs sont rassemblées deux fois, j'essayais d'entrer la méthode utilisée dans l'un des autres threads ADO.NET. –
Je veux dire où est 'cmdInsert.ExecuteNonQuery()'? Si vous n'exécutez pas le comportement attendu, il n'y a pas d'exécution après tout. –