C# mise à Jour de la Table à l'aide de SqlCommand.Paramètres
Je suis en train de mettre à jour une MSSQL table à l'aide de SqlCommand, je pense que c'est une erreur de syntaxe avec mon T-SQL, mais voici ce que j'ai à ce jour:
SqlCommand sqlCmd = new SqlCommand("UPDATE yak_tickets SET email = @emailParam, subject = @subjectParam, text = @textParam, statusid = @statusIDParam, ticketClass = @ticketClassParam WHERE id = @ticketIDParam", sqlConn);
Les paramètres fonctionnent comme ils le devraient, cependant, le tableau n'est jamais mis à jour lorsque j'exécute le code. Toute aide serait apprécié =)
Voici le reste du code:
#region Parameters
/* Parameters */
sqlCmd.Parameters.Add("@ticketIDParam", SqlDbType.BigInt);
sqlCmd.Parameters["@ticketIDParam"].Value = ticketID;
sqlCmd.Parameters.Add("@emailParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@emailParam"].Value = ticketToBeSubmitted.getEmail();
sqlCmd.Parameters.Add("@subjectParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@subjectParam"].Value = ticketToBeSubmitted.getSubject();
sqlCmd.Parameters.Add("@textParam", SqlDbType.Text);
sqlCmd.Parameters["@textParam"].Value = ticketToBeSubmitted.getTicketContent();
sqlCmd.Parameters.Add("@statusIDParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@statusIDParam"].Value = ticketToBeSubmitted.getStatus();
sqlCmd.Parameters.Add("@ticketClassParam", SqlDbType.NVarChar);
sqlCmd.Parameters["@ticketClassParam"].Value = ticketToBeSubmitted.getTicketClass();
#endregion
#region Try/Catch/Finally
/* Try/Catch/Finally */
try
{
sqlConn.Open();
sqlCmd.ExecuteNonQuery();
}
catch (SqlException sqlEx)
{
sqlErrorLabel.Text = sqlEx.ToString();
sqlErrorLabel.ForeColor = System.Drawing.Color.Red;
}
finally
{
sqlConn.Close();
}
Et la signature de la méthode:
public static void updateTicketInDatabase(Ticket ticketToBeSubmitted, Label sqlErrorLabel, int ticketID)
C'est probablement une question stupide, mais avez-vous attribuer votre commande sql pour votre connexion sql? sqlCommand.Connexion = sqlConn; j'ai l'habitude de le faire dans la construction sqlCommand = new SqlCommand(sqlConn); je pense qu'il serait lever une erreur si vous navez pas.
Ouais, le constructeur que j'ai utilisé a un à la fin.
Êtes-vous réellement à l'aide de champs de type NVArchar dans votre base de données? ou tout simplement varchar?
Ouais, NVarChar.
Ouais, le constructeur que j'ai utilisé a un à la fin.
Êtes-vous réellement à l'aide de champs de type NVArchar dans votre base de données? ou tout simplement varchar?
Ouais, NVarChar.
OriginalL'auteur skylerl | 2009-12-19
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR est de syntaxe non valide (edit: OP corrigé cette). Le problème pourrait également être le "
text
" de la colonne.text
est un mot-clé dans SQL Server, puisque c'est un type de données. Essayez de mettre des parenthèses autour d'elle.Oh, mais ça ne marche toujours pas autrement? Peut-on voir plus de code?
Pourriez avoir besoin de clarification, vous pouvez avoir une clause from dans une instruction de mise à JOUR par exemple mettre à JOUR t t.Champ='Bla' from MyTable t OÙ t.Id = 1
Merci Ada. Je viens de remarquer que dès le départ, il a eu de mise à JOUR à PARTIR, ce qui n'était pas valide.
yep, j'allais parler de la même chose. Je savais ce que tu voulais dire, juste pensé que d'autres pourraient ne pas 🙂
OriginalL'auteur womp
Eu à utiliser if(!Page.IsPostBack)
OriginalL'auteur skylerl
Quelques questions:
Si vous pouviez obtenir une trace du générateur de profils, vous pouvez voir exactement ce qui est envoyé. et essayez d'exécuter la même commande sur le serveur vous-même (en supposant que vous avez accès).
Je veux je l'ai fait, GoDaddy est très restrictive à un tel accès =/
OriginalL'auteur GrayWizardx
Semble que votre fournisseur d'hébergement limites de vos options de débogage, vous forçant à le faire à l'ancienne. Que si, immédiatement après la mise à jour, vous mettez quelque chose comme:
alors au lieu de ExecuteNonQuery, ne ExecuteScalar, et de voir si SQL pense même ses mises à jour quoi que ce soit.
OriginalL'auteur Ant