sqlite lance une "chaîne non reconnue comme datetime valide"
Je joue avec Sqlite et reçois un message d'erreur lorsque vous essayez de lire des données de test. Par exemple, j'ai créé un simple db avec une seule table et des colonnes et remplie avec des données de test comme indiqué ci-dessous.
sqlite> .schema
CREATE TABLE "shows"(id integer primary key asc autoincrement, showName TEXT, guest TEXT, dateAired date, dateWatched date);
sqlite> select * from shows;
6|test show|test guest 1|2012.05.01|2012.07.10
7|test show|test guest 2|2012.05.02|2012.07.10
8|test show|test guest 4|2012.05.04|2012.07.10
Je suis en utilisant le Système.Les données.Sqlite disponibles de la bibliothèque ici , mais il continue de me donner l'erreur en essayant de lire la colonne date. J'ai essayé de mettre les dates dans le jj-MM-aaaa, mais encore obtenir un message d'erreur indiquant que "la Chaîne n'est Pas Reconnu comme un datetime valide." J'ai essayé d'utiliser DateTime.D'analyser ou de moulage de type datetime ou tout simplement ToString () ing pour voir ce qui se passe, mais je reçois le même message d'erreur. Je peux lire le texte des champs de bien, mais ne peut pas lire dans les champs de date.
Mon code C# ciselée est donnée ci-dessous
var sqliteConn = new SQLiteConnection("Data Source=data/shows.db;Version=3;New=False;Compress=True");
sqliteConn.Open();
SQLiteCommand cmd = new SQLiteCommand(sqliteConn);
cmd.CommandText = "select * from shows";
SQLiteDataReader reader = cmd.ExecuteReader( );
while (reader.Read( ))
{
var showName = reader["showName"];
//This is where it keeps giving me an error.
//I have tried various things such as DateTime.Parse
var airedDate = DateTime.ParseExact("yyyy.MM.dd", reader["dateAired"].ToString(), new CultureInfo("en-AU"));
}
reader.Close( );
Toute aide serait grandement appréciée.
Ce qui concerne,
source d'informationauteur Chaitanya
Vous devez vous connecter pour publier un commentaire.
Basé sur la discussion en ce filj'ai décidé de construire ma chaîne de connexion avec le "datetimeformat paramètre" et la "Chaîne de caractères ne sont Pas Reconnus comme un datetime valide" problème a été résolu.
Mon exemple de chaîne de connexion:
Cette fonctionnalité a été publié dans la version 1.0.87.0 le 8 juillet 2013 (voir notes de version)
Ce fil, peut-être un peu vieux, mais je suis tombé sur le même problème et a trouvé une "solution".
Il semble que Système.Les données.SQLite ne gère pas
DateTime
s correctement. J'ai essayéDateTime.ParseExact
et a donné le format dans ma base de données (mm/jj/aaaa) mais j'ai remarqué qu'il a jeté une erreur lors de l'appeler justeToString()
sur leDataReader
colonne pour la date. Cela semblait étrange, car je n'étais pas tenter de l'adapter dans uneDate
mais à lire comme unString
.À cause de cela, je suis retourné à la vue j'ai été appeler à partir de la base de données et enveloppé de toutes mes dates dans un
CAST as nvarchar(10)
. De cette façon, la base de données sera de retour les chaînes et non les dates. Maintenant, laDateTime.Parse
fonctionne très bien!Je vais utiliser un déclencheur sur la vue de tirer sur la ficelle/date de retour et insérer/mettre à jour les tables sous-jacentes, donc d'avoir toutes les conversions se produisent dans la base de données, au lieu de Système.Les données.SQLite.
Il y a une nouvelle version de Système.Les données.SQLite quelques temps, en décembre 2012, j'espère que cela vous est adressé!
Cela fonctionne, j'ai testé ce, en raison des fonctions intégrées dans sqlite convertit une chaîne au format datetime
Changer votre système de format de date /heure pour vous de la base de données fild format datetime.
j'espère que cela vous aidera....