Erreur de base de données: Il n'y a pas de ligne à la position 0
Je crois que cette question a été posée à plusieurs mois en arrière, mais je crois que ma situation est différente et que les mêmes règles ne s'appliquent pas.
Chaque fois que j'exécute cette méthode que le même message d'erreur s'affiche. Il n'y a pas de ligne à la position 0. Si je change de [0] à [1] ou [15]; Il n'y a pas de ligne à [1] et etc. Cela pourrait-il signifier que ma base de données n'est pas même à vous connecter? Dois-je écrire une sorte de si instruction afin de déterminer pour vérifier si les lignes sont encore là?
public bool UpdateOrderToShipped(string order)
{
orderNumber = order;
string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
string statement = "UPDATE SOP10100 SET BACHNUMB = '"+ batch +"' WHERE SOPNUMBE = @SOPNUMBE";
SqlCommand comm = new SqlCommand(statement, connectionPCI);
comm.Parameters.Add("SOPNUMBE", orderNumber);
try
{
comm.Connection.Open();
comm.ExecuteNonQuery();
comm.Connection.Close();
}
catch(Exception e)
{
comm.Connection.Close();
KaplanFTP.errorMsg = "Database error: " + e.Message;
}
statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
comm.CommandText = statement;
SqlDataAdapter da = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
da.Fill(dt);
soptype = dt.Rows[0]["SOPTYPE"].ToString(); //errror here
return true;
}
Pourquoi est votre méthode bool? Il ne retourne true
une raison évidente est que, dans l'avenir, la capture est d'aller-retour d'un faux de sorte que l'appelant savoir s'il a réussi ou pas.
c'est OK dans certaines méthodes, où vous attendent des erreurs de se produire. Ce n'est pas le cas.
Je suis sûr que c'est une question facile, mais j'obtiens une erreur avec la Longueur de la propriété, CS1061: 'Système.Les données.DataRowCollection' ne contient pas une définition pour 'longueur' et aucune méthode d'extension 'longueur' acceptant un premier argument de type 'System.Les données.DataRowCollection' a pu être trouvé (vous manque une directive using ou une référence d'assembly?) Je suis sûr que je peux trouver la réponse, mais juste au cas ou quelqu'un voudrais de l'aide.
bien sûr, c'est pourquoi j'ai demandé. J'ai peut-être tort, le commettant avait une bonne raison pour retourner un booléen dans cette méthode, et je voudrais apprendre de lui. Ou je pourrais avoir droit, il ne peut même pas réalisé que c'est une mauvaise conception, et de lui apprendre. C'est pourquoi nous sommes ici, à Débordement de Pile, à droite? 🙂
une raison évidente est que, dans l'avenir, la capture est d'aller-retour d'un faux de sorte que l'appelant savoir s'il a réussi ou pas.
c'est OK dans certaines méthodes, où vous attendent des erreurs de se produire. Ce n'est pas le cas.
Je suis sûr que c'est une question facile, mais j'obtiens une erreur avec la Longueur de la propriété, CS1061: 'Système.Les données.DataRowCollection' ne contient pas une définition pour 'longueur' et aucune méthode d'extension 'longueur' acceptant un premier argument de type 'System.Les données.DataRowCollection' a pu être trouvé (vous manque une directive using ou une référence d'assembly?) Je suis sûr que je peux trouver la réponse, mais juste au cas ou quelqu'un voudrais de l'aide.
bien sûr, c'est pourquoi j'ai demandé. J'ai peut-être tort, le commettant avait une bonne raison pour retourner un booléen dans cette méthode, et je voudrais apprendre de lui. Ou je pourrais avoir droit, il ne peut même pas réalisé que c'est une mauvaise conception, et de lui apprendre. C'est pourquoi nous sommes ici, à Débordement de Pile, à droite? 🙂
OriginalL'auteur javasocute | 2011-10-17
Vous devez vous connecter pour publier un commentaire.
C'est très simple ... cela signifie qu'aucun résultats ont été renvoyés à partir de votre requête. Vous avez toujours de code avec précaution et vérifier pour voir si les Lignes de la matrice a des éléments qu'il contient avant d'essayer de l'index. Quelque chose comme:
OriginalL'auteur Joel Martinez
vous pourriez avoir des données dans la table, mais je pense que la fermeture de la connexion, après la première requête. essayez d'ouvrir à nouveau la connexion. Vous avez également la concaténation de chaîne dans la première requête SQL, ce qui n'est pas une bonne pratique. essayez d'utiliser le bloc au lieu de try.. catch, juste pour un meilleur code. Et comme Joel suggéré, l'utilisation d'une check
OriginalL'auteur Junaid
OriginalL'auteur Prashant M Biradar
J'ai eu le même problème, puis j'ai réalisé que ma première colonne n'a pas été basée sur des entiers. Alors quand j'ai édité le premier, j'ai affronté le même message d'erreur.
Donc, ma suggestion est de ne pas modifier la première colonne ou de faire la première colonne une colonne ID dans ce cas, vous n'avez pas à modifier quoi que ce soit.
OriginalL'auteur Muhammad Suleman