ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Problem mit Date und DB - Version

Letzter Beitrag 06-29-2012, 11:24 von TiSch. 8 Antworten.
Beiträge sortieren: Zurück Weiter
  •  06-19-2012, 18:13 224416

    Problem mit Date und DB - Version

    Hallo Zusammen

    Ich möchte einen neuen Datensatz einfügen (von meinem CMS aus) in die Datenbank. Dann erscheint aber folgender Fehler:

    Die verwendete SQL Server-Version unterstützt nicht den Datentyp 'date'.

    Muss ich da beim einfügen vom Datensatz etwas ändern, oder bei der Datenbank? Was für eine Version brauche ich denn?

    Danke und Gruss
    Master Chief?
  •  06-19-2012, 18:46 224417 Antwort zu 224416

    AW: Problem mit Date und DB - Version

    Date wird erst ab SQL-Server 2008 unterstützt, wahrascheinlich hast Du eine 2005er Version.

     "Muss ich da beim einfügen vom Datensatz etwas ändern, oder bei der Datenbank?"
    Keine Ahnung was Du für ein CMS nutzt oder wie du sie einfügst, aber ein Datetime bekommt man z.B. so:

    SELECT GETDATE() -- aktuelle Datum+Uhrzeit
    oder
    SELECT CONVERT(datetime,'2012-06-19 16:45:00', 102) -- jetzige Uhrzeit, manuell


    Gruß

    Stack Overflow profile for Tim at Stack Overflow, Q&A for professional and enthusiast programmers
  •  06-20-2012, 16:07 224419 Antwort zu 224417

    AW: Problem mit Date und DB - Version

    Und wie kann ich die Version ändern?
  •  06-20-2012, 16:34 224420 Antwort zu 224419

    AW: Problem mit Date und DB - Version

    Ich kenn weder das benutzte CMS, noch die tatsächlich benutzte Datenbank (alles Vermutungen), noch die Art und Weise wie Du einen Datensatz erzeugst. Wie soll man da weiterhelfen?

    Eine Datenbank Version kann man nicht ändern. Man kann sich eine Lizenz für eine andere Version kaufen oder die freien Versionen nutzen (oder gleich eine komplett andere Datenbank wie MySQL). Aber ob Dein CMS damit funktioniert... ???


    Gruß

    Stack Overflow profile for Tim at Stack Overflow, Q&A for professional and enthusiast programmers
  •  06-20-2012, 17:09 224421 Antwort zu 224420

    AW: Problem mit Date und DB - Version

    Ja klar. Tut mir leid =)

    Also ich arbeite mit MS SQL-Server. Version kann ich nicht sagen (weis nicht wo ich das schauen kann =).
    Zusätzlich arbeite ich mit dem MS Visual Studio und habe eine Webapplikation entwickelt.

    Ich benutze das interne System von Visual Studio für die Datenbankmanipulationen (Linq). Im Datenbank System habe ich der Spalte den Typ 'datetime' gegeben.
    Wie folgt füge ich einen neuen Datensatz in die Datenbank ein:

    DataContext dc = new DataContext();


    Member m = new Member(){

    Firstname = data["Firstname"],

    Surname = data["Surname"],

    Birthday = Tools.ConvertToDate(data["Birthday"]),

    };


    dc.Member.InsertOnSubmit(m);

    dc.SubmitChanges();


    Offline funktioniert das Wunderbar. Nur wenn ich online ein neues Mitglied einfügen will, kommt der oben genannte Fehler.
    Wenn ich aber per SQL Server Management Studio auf die Datenbank (online) zugreife, hat die Spalte den Typ DateTime.

    Hoffe jetzt ist es ein wenig klarer und jemand kann mir helfen =)

    Danke und Gruss
    Master Chief
  •  06-25-2012, 17:29 224443 Antwort zu 224421

    AW: Problem mit Date und DB - Version

    Niemand eine Idee??
  •  06-25-2012, 20:50 224444 Antwort zu 224421

    AW: Problem mit Date und DB - Version

    Hi,

    was ist denn "Tools" und was macht die dortige Methode "ConvertToDate"? Ich an deiner Stelle würde mir eine Variable vom Typ DateTime erstellen, diese füllen und es dann mal damit probieren.

    Die Versionsnummer von SQL Server erhältst Du mit

      SELECT @@Version

    Poste den String, den Du dort zurückerhältst, mal komplett.

    Deine lokale Datenbank hat für die betreffende Spalte auch "datetime"? Falls ja, ist dein Mapping wahrscheinlich nicht mehr aktuell. Schau dazu mal hier:

      http://msdn.microsoft.com/de-de/library/bb386947.aspx


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  06-29-2012, 10:36 224460 Antwort zu 224444

    AW: Problem mit Date und DB - Version

    Hallo Stefan

    Danke für deine Antwort.

    Tools ist eine statische Klasse von mir. Und die Methode ConvertToDate, macht nichts anderes, als der Input zu einem DateTime zu konvertieren.
    Dies gibt mir die Sicherheit, dass auch wirklich immer ein DateTime gesetzt wird.

    public static DateTime ConvertToDate(object o)
    {

    try

    {
    return DateTime.Parse(o.ToString());

    }
    catch (Exception)

    {
    // Könnte vlt hier das Problem liegen?

    return new DateTime();

    }

    }



    Stefan Falz:
    Hi,
    Poste den String, den Du dort zurückerhältst, mal komplett.


    Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86)   Dec 10 2010 10:56:29   Copyright (c) 1988-2005 Microsoft Corporation  Express Edition on Windows NT 6.0 (Build 6002: Service Pack 2)

    Danke für eure Hilfe und Gruss
  •  06-29-2012, 11:24 224462 Antwort zu 224460

    AW: Problem mit Date und DB - Version

    Master Chief:
    Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86)   Dec 10 2010 10:56:29   Copyright (c) 1988-2005 Microsoft Corporation  Express Edition on Windows NT 6.0 (Build 6002: Service Pack 2)

    Da Du ja sowieso die kostenlose Express Edition von SQL-Server 2005 einsetzt, wäre es keine Option gleich auf SQL-Server 2008 oder 2012 (Express) zu wechseln?

    Master Chief:
    Tools ist eine statische Klasse von mir. Und die Methode ConvertToDate, macht nichts anderes, als der Input zu einem DateTime zu konvertieren. Dies gibt mir die Sicherheit, dass auch wirklich immer ein DateTime gesetzt wird.

    public static DateTime ConvertToDate(object o)
    {

    try

    {
    return DateTime.Parse(o.ToString());

    }
    catch (Exception)

    {
    // Könnte vlt hier das Problem liegen?

    return new DateTime();

    }

    }
    Keine Ahnung ob das die Ursache sein kann, jedenfalls würde ich das nicht so machen.


    Birthday = Tools.ConvertToDate(data["Birthday"])
    Was ist data für ein Typ? Vermutlich ist data["Birthday"] sowieso schon ein DateTime Objekt. Du brauchst es dann also bloss dazu zu casten
    Birthday = (DateTime)data["Birthday"];

    Dann wäre es unnötig und fehleranfällig es in einen String umzuwandeln (ToString()), um es danach wieder in ein DateTime Objekt zu parsen. Die Fehlerquelle dabei ist die Lokalisierung. ToString wandelt das DateTime Objekt mithilfe der momentanen CultureInfo um(z.B. "en-US" oder "de-DE"). Denkbar ist auch dass aus diesem Grund in ConvertToDate ein fehlerauftritt bei DateTime.Parse(o.ToString()). Dann würde im Catch block ein DateTime Objekt erzeugt werden welches niedriger ist(1/1/0001 12:00:00 AM oder DateTime.MinValue) als in SQL-Server erlaubt(01/01/1753). Damit tust Du Dir also erst Recht keinen Gefallen. An der Stelle sollte der ursprüngliche Fehler auf jeden Fall geworfen und nicht unterdrückt werden.

    Ich würde auf jeden Fall mal einen Haltepunkt setzen(ebenfalls im Catch-Block) um die Werte an der Stelle zu inspizieren.



    Gruß

    Stack Overflow profile for Tim at Stack Overflow, Q&A for professional and enthusiast programmers
Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)