Impossible de convertir l'objet de type 'System.Object [] "pour le" type de Système.IConvertible' comment faire face à cette erreur?
string dt = "SELECT Last_login,SnapNo,Membership from [User] where FB_Id='" + uid1 + "'";
da = new SqlDataAdapter(dt, con);
ds1 = new DataSet();
da.Fill(ds1);
DateTime dt1 = Convert.ToDateTime(ds1.Tables[0].Rows[0].ItemArray);
Int32 snapno = Convert.ToInt32(ds1.Tables[0].Columns["Last_login"]);
string membership = ds1.Tables[0].Rows[2].ItemArray.ToString();
DateTime dt2 = DateTime.Now;
Mon code est comme suit, et je ne suis pas en mesure de résoudre ce problème
S'il vous plaît aider
- Pourquoi êtes-vous en train d'essayer de convertir un tableau à une
DateTime
? Je devine que votre erreur qui se passe surDateTime dt1 = Convert.ToDateTime(ds1.Tables[0].Rows[0].ItemArray);
, droit? - Votre code n'a aucun sens.
- M Babcock oui l'erreur est venue il y a seulement..et @Andre essayé aussi..sans succès
- Comment avez-vous rêver de ce code ? Quel genre de magie ne vous attendez
ItemArray
faire ? - Pourquoi n'utilisez-vous pas VS débogueur?
- comment puis-je extraire les données dans les lignes de bien vouloir dire?
- jetez un oeil à ma réponse.
- j'ai résolu mon problème
Vous devez vous connecter pour publier un commentaire.
Il est difficile de comprendre ce que votre code est censé faire, et il semble que vous ne comprenez pas ce qui ne
Rows
,Columns
, etItemArray
veux dire. Vous devriez lire leur documentation.Ce que je pense que vous essayez de faire est quelque chose comme ceci:
"Mon code est comme suit, et je ne suis pas en mesure de résoudre ce problème": Avez-vous essayez d'utiliser le débogueur ? Dans quelle ligne l'exception se produire ? Cette question n'a pas vraiment d'indiquer le moindre effort pour essayer de résoudre le problème de votre auto.
De toute façon, avec le peu d'informations, je vais faire une supposition à la solution:
ds1.Tables[0].Rows[0].ItemArray
est la matrice de tous les éléments de la ligne. Vous ne pouvez pas convertir un DateTime. Il est probable que vous voulez:Par la voie, vraiment, vous devez utiliser des requêtes SQL paramétrées.
ItemArray
retourne un tableau d'objets.DateTime
stocke une valeur unique. Qu'attendez-vous d'une conversion à faire?Si le tableau d'objets contenant des dates, vous pouvez le faire
Si vous avez seulement besoin d'une date
où
"DateColumn"
est le nom de votre colonne de la table.Ce n'est pas vraiment de sens, parce que le DataRow type de ItemArray propriété renvoie un
object[]
(ce qui devrait être évident à partir du nom). Vous avez besoin pour obtenir de champ, par exemple sous forme de chaîne, avant que vous pouvez faire cela, comme ceci:L'exception que vous avez vu se produit, car tous convertisseur méthodes de la Convertir travail en classe avec IConvertible objets (c'est à dire des objets dont le type implémente cette interface). Habituellement, seulement la plupart des types primitifs d'implémenter cette interface, comme string, int et DateTime. C'est parce qu'il est souvent judicieux de convertir les valeurs de ces types de l'une à l'autre.
Si vous pensez à ce sujet pendant un moment, vous vous rendrez compte qu'il n'existe pas de connexion entre un tableau d'objets et le type DateTime, qui est pourquoi vous obtenez une exception.
Je voudrais suggérer que le premier vous essayez de résoudre le problème sur votre propre avant de venir ici pour obtenir de l'aide. Vous pouvez en apprendre beaucoup plus de cette façon, ce qui vous rend plus productif sur le long terme.
Pour commencer, je vous recommande de lire la documentation msdn sur le IConvertible de l'interface et la classe Convert.
IConvertible
est une interface tout ce passe à l'intérieur de cette fonction doit mettre en œuvre.Un tableau d'objets retournés par votre appel SQL ne permet pas de mettre en œuvre ICOnvertible, et ne peut donc pas être utilisé comme un argument.
Pense que vous essayez d'appeler une fonction comme ceci:
en utilisant