Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ημερομηνίες vb.net και sql server 2005

Îåêßíçóå áðü ôï ìÝëïò leukonas. Τελευταία δημοσίευση από το μέλος leukonas στις 07-10-2010, 16:27. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-10-2010, 17:29 60389

    Ημερομηνίες vb.net και sql server 2005

    Καλησπέρα σε όλους,

     φτιάχνω μια εφαρμογή σε vb.net με sql server 2005.Εχω χάσει λιγάκι την μπάλα με τις ημερομηνίες.Δεν έχω καταλαβει τι απο όλα πάιζει ρόλο.Τα regional settings του μηχανήματος?Το collation της βάσης?H to culture της εφαρμογής που φτιάχνω?

    Το πρόβλημα μου είναι το εξής.

    Τα regional settings του μηχανήματος είναι ελληνικά.Το collation της βάσης είναι Greek_ci_as.Παρόλαυτα όταν πάω να κάνω save στη βάση μια ημερομηνία της μορφής 25/10/2010 χτυπάει.Τι κάνω λάθος?Υπάρχει κάποιος τρόπος να θέσω globally στην εφαρμογή μου να παίζει με ελληνικό culture ή πρέπει να το ρυθμίζω σε κάθε φόρμα?

    Παρακαλώ όποιος μπορεί ας βοηθήσει.Ευχαριστώ

    Δημοσίευση στην κατηγορία: , , ,
  •  03-10-2010, 18:14 60390 σε απάντηση της 60389

    Απ: Ημερομηνίες vb.net και sql server 2005

    Καταρχήν διάβασε αυτό: http://www.dotnetzone.gr/cs/blogs/pkanavos/archive/2007/01/18/23726.aspx

    Που σημαίνει ότι κάτι κάνεις λάθος στη διαδικασία. Καλύτερα να μας πεις πώς κάνεις το insert στη βάση. Λίγος κώδικας πιστεύω θα είναι διαφωτιστικός...

     


    Vir prudens non contra ventum mingit
  •  03-10-2010, 18:18 60391 σε απάντηση της 60389

    Απ: Ημερομηνίες vb.net και sql server 2005

    Κανονικά δεν χρειάζεται να κάνεις τίποτα. Από τη στιγμή που περνάς μία τιμή DateTime ως παράμετρο σε ένα parameterized sql statement και την αποθηκεύεις σε πεδίο DateTime στη βάση, δεν τίθεται κανένα θέμα conversion, regional settings ή locale. Όπως και με τα Ελληνικά πρέπει να "χαλάσεις" τα πράγματα με το χέρι για να εμφανιστούν προβλήματα.

    "Χαλάσεις" σημαίνει είτε να αποθηκεύσεις την ημερομηνία σε (n)varchar πεδίο αντί για datetime στη βάση, είτε να "καρφώσεις" την ημερομηνία στο SQL statement αντί να την περάσεις ως παράμετρο. Έτσι κι αλλιώς είναι πάρα πολύ κακή ιδέα να φτιάχνεις χύμα sql statements αντί να χρησιμοποιείς παραμέτρους: μειώνεις την απόδοση, μένεις έκθετος σε sql injection και ... μπλέκεις με τα regional settings. Και δεν μιλάμε μόνο για ημερομηνίες αλλά και δεκαδικά (, ή .) και codepages (1032 ή 1033 ?)

    Επειδή το θέμα έχει συζητηθεί δεκάδες φορές, κάνε ένα search στο site για να δεις πως να χρησιμοποιήσεις parameterized queries. Αν πρέπει ντε και καλά να καρφώσεις την ημερομηνία, φρόντισε να την περάσεις στη μορφή yyyyMMdd. Είναι το μόνο format το οποίο ο SQL Server θα καταλάβει σίγουρα. Περισσότερες λεπτομέρειες θα βρεις και στο Ο SQL Server δεν χρειάζεται κόλπα για να υποστηρίξει ελληνικά


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-10-2010, 16:27 60470 σε απάντηση της 60391

    Απ: Ημερομηνίες vb.net και sql server 2005

    Ευχαριστώ πολύ για τις απαντήσεις σας.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems