Laden...

SQL Suche gibt nichts zurück- warum?

Erstellt von Murray 'Boz' Bozinsky vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.357 Views
Murray 'Boz' Bozinsky Themenstarter:in
92 Beiträge seit 2006
vor 17 Jahren
SQL Suche gibt nichts zurück- warum?

Hallo,

ich bin am Verzweifeln. Ich suche einen Wert in einer Tabelle, welcher an einer bestimmten Zeit geschrieben wurde. Dieser Wert existiert, ebenso wie das DateTime Objekt, was das Suchkriterium angibt- (ich kann sie in der Datenbank auf dem Server bei Betrachtung der Tabelle sehen).

Ich versuche es wie folgt:

  public Guid getCoGuidDGV(DateTime created)
        {
            SqlConnection con = new SqlConnection(ConnectionString);
        
            SqlCommand cmd = new SqlCommand(
               "SELECT eID FROM Events WHERE " +
               "DateTimeCreted = '" + created + "'", con);
            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            Guid target = Guid.Empty;
            if (dr.HasRows)
            {
                dr.Read();
                target = dr.GetGuid(0);
                dr.Close();
                con.Close();
            }
            else
            {
                dr.Close();
                con.Close();
            }
            return target;
        }

Es wird lediglich ein leeres GUID zurückgeliefert. Die SQL Abfrage scheint okay, die Werte existieren auf jeden Fall in der Tablelle, nur findet das Ding aus irgendeinem Grund nichts.
Warum?

B
1.529 Beiträge seit 2006
vor 17 Jahren

Hast du bemerkt, dass in deiner Abfrage

"SELECT eID FROM Events WHERE _*_DateTimeCreted_*_ = '" + created + "'", con);

steht?
Desweiteren würde ich die Zeiten nicht ohne Angabe eines Formats in der DB speichern, sonst wird es auf dem nächstbesten nicht-deutschen Windows nicht mehr funktionieren.

EDIT: Farben funktionieren im Code nicht, daher:
ich meinte, dass bei dir DateTimeCreted steht, das Feld jedoch wahrscheinlich DateTimeCreated heisst.

Murray 'Boz' Bozinsky Themenstarter:in
92 Beiträge seit 2006
vor 17 Jahren

Das mit dem "Creted" stimmt schon, da hat der Datenbankentwickler vor Unzeiten mal einen Schreibfehler begangen...

484 Beiträge seit 2006
vor 17 Jahren
SqlCommand cmd = new SqlCommand(
               "SELECT eID FROM Events WHERE DateTimeCreted = @DateTimeCreated, con);
cmd.Parameters.Add("@DateTimeCreated", SqlDbType.DateTime).Value = created ;

Arbeite besser mit Parametern.

Gruß Jörg