2010-03-09 4 views
2

J'utilise Sql Compact3.5 comme ma base de données avec C# .NET Dans différents systèmes, je reçois le format datetime différemment. Dans un Windows XP, il récupère le datetime au format: MM-jj-aaaa HH: mm: ss et dans Media Center il récupère au format: MM/jj/aaaa hh: m: ss. Existe-t-il un moyen de libérer le format datetime de la culture ou puis-je définir le format datetime en format compact sql alors laissez-le être n'importe quel PC qu'il utilisera ce format seulement ???DateTime problème en SQL compact

Exemple:

//TimeOfCall is passed as String using the format DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"); 
using (SqlCeConnection con = new SqlCeConnection(ConString)) 
{ 
    using (SqlCeCommand SqlceCmd = new SqlCeCommand(
     "Insert into myreports(TimeOfCall,Status) values(?,?)", con)) 
    { 
     if (con.State == ConnectionState.Closed) 
      con.Open(); 
     SqlceCmd.Parameters.Add(new SqlCeParameter("@TimeOfCall", strTimeOfCall)); 
     SqlceCmd.Parameters.Add(new SqlCeParameter("@Status", strStatus)); 

     int RowsaAffected = SqlceCmd.ExecuteNonQuery(); 
     con.Close(); 
     return RowsaAffected; 
    } 
} 

Alors que Rertiving l'enregistrement de la requête est utilisée de cette manière:

//FromTime and ToTime are passeed in the same format as while storing 
using (SqlCeConnection con = new SqlCeConnection(ConString)) 
{ 
    using (SqlCeDataAdapter SqlceDA = new SqlCeDataAdapter("Select TimeOfCall from myreports where TimeOfCall between '" + strFromTime + "' and '" + strToTime + "' order by TimeOfCall", con)) 
    { 
     if (con.State == ConnectionState.Closed) 
      con.Open(); 
     SqlceDA.Fill(dtReports); 
     con.Close(); 
     return dtReports; 
    } 
} 

J'espère qu'il est clair

Répondre

3

Ok, à partir du code, vous êtes essentiellement faire la bonne chose dans le mauvais sens. Les bonnes nouvelles sont que vous utilisez des paramètres - c'est exactement exact - mais vous n'avez pas vraiment besoin ne veut pas pour convertir la date en une chaîne avant de définir la valeur du paramètre.

Le plus simple devrait être de changer SqlceCmd.Parameters.Add(new SqlCeParameter("@TimeOfCall", strTimeOfCall)); en SqlceCmd.Parameters.AddWithValue("@TimeOfCall", timeOfCall)); où timeOfCall est une valeur DateTime.

La même chose s'applique à l'état si ce n'est pas nativement une chaîne.

Si vous souhaitez être plus explicite sur les types, créez d'abord le paramètre en définissant le type, puis définissez-le.

Pour votre requête de sélection faire la même chose, remplacer votre concaténation de chaînes avec des paramètres @fromTime et @toTime et définissez les paramètres directement à partir des valeurs DateTime appropriées

+0

Merci pour la réponse. Je vais essayer de te le faire savoir !!! – Jankhana