2014-06-17 4 views
1

Bonjour je besoin d'aide pour faire cette requête,comment faire la requête avec le temps var dans sqlite

le var temps appelé "dia" ont cette valeur 16/06/2014 08:23:19 mon code est ce

cmd.CommandText = "select nombres, apellidos, cargo, id, dia, retraso_min 
from m_empleado as emp 
join asist as asis 
where emp.id = asis.id_emp 
    and asis.dia > '" + des + "' 
    and asis.dia < '" + has + "' " 

Si je mets select * from asist où dia> 06/10/2014 cela fonctionne très bien, mais ... ma requête ne fonctionne pas « des » a la valeur de « 06/10/2014 » et "a" a la valeur de "30/12/2014 j'essaie avec entre la phrase mais doesn Ne travaille pas pour moi Des idées?

+0

Ne pas utiliser concaténation de chaîne pour buid commandes SQL. Utilisez une requête paramétrée et laissez la base de données interpréter le paramètre datetime transmis. – Steve

+0

merci avez-vous un échantillon? – user3215218

Répondre

0

L'exemple ci-dessous montre comment utiliser une requête paramétrée pour effectuer une recherche entre deux dates.
Gardez à l'esprit que dans une requête paramétrée, la valeur transmise pour les paramètres doit correspondre au type de données exact attendu par la colonne objet de la recherche. Par conséquent, si votre champ datable dia est un champ datetime, vous devez préparer deux paramètres de type datetime.
(dia et has variables doivent être datetime pas des chaînes)

DateTime dia = DateTime.Today; // from 18 jun 2014 00:00 
DateTime has = DateTime.Today.AddMinutes(1439); // to 18 Jun 2014 23:59 

using(SQLiteConnection cnn = new SQLiteConnection(@"Data Source=D:\\temp\\mydb.db;Version=3")) 
{ 
    cnn.Open(); 
    SQLiteCommand cmd = new SQLiteCommand(@"select nombres, apellidos, cargo, id, dia, 
       retraso_min from m_empleado as emp join asist as asis 
       where emp.id = asis.id_emp and asis.dia between @ini and @fin", cnn); 
    cmd.Parameters.AddWithValue("@ini", dia); 
    cmd.Parameters.AddWithValue("@fin", has); 
    DataTable dt = new DataTable(); 
    SQLiteDataReader reader = cmd.ExecuteReader(); 
    dt.Load(reader); 

} 
+0

il me laisse cette exception maintenant: System.Data.Odbc.OdbcException (0x80131937): erreur [HY000] nombre de marqueurs de paramètre incorrect – user3215218

+0

ODBC? Où avez-vous eu ODBC? Cet exemple utilise le fournisseur ADO.NET pour SQLite http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki (ODBC utilise un marqueur différent pour les paramètres Le point d'interrogation. 'Dia entre ? et? ') – Steve

+0

Désolé je ne colle pas tout le code, mon mauvais, oui, ça marche tout ok avec le? symboles MERCI! – user3215218

Questions connexes