2016-12-09 1 views
0

Ich bin auf ein Problem mit einem C# -Projekt gestoßen, an dem ich arbeite. Ich erhalte eine Objektarray enthält alle ausgewählten Elemente aus einer Datenbank Zeile mit der Funktion:C# Fehler beim Konvertieren von Bytearray von der Datenbank in Bild

public static object[] getResultSet (string statement) 
     { 
      object[] resultArray=null; 
      OleDbConnection con = getConnection(); 
      OleDbCommand command = new OleDbCommand(statement, con); 
      try 
      { 
       con.Open(); 
       OleDbDataReader reader = command.ExecuteReader(); 

       if (reader.Read()) 
       { 
        resultArray = new object[reader.FieldCount]; 
        reader.GetValues(resultArray); 
       } 
       reader.Close(); 
      } 
      catch (OleDbException ex) 
      { 
       MessageBox.Show(ex.ToString(),"Error",MessageBoxButtons.OK,MessageBoxIcon.Error); 
      } 
      finally 
      { 
       con.Close(); 
      } 
      return resultArray; 
     } 

und ich habe dieses Objekt Array, in dem ich alle Ergebnisse gespeichert haben:

object[] obj = getResultSet("SELECT * FROM Rooms WHERE ID=1"); 

ich sicher weiß, dass das Objekt obj [2] ein BLOB in meiner Datenbank ist, weil der Debugger über 3mil Bytes für mein Objekt zeigt. Aber wenn ich versuche, die Bytes Array von dem Objekt zu konvertieren wir informieren Sie, dass ich nicht eine Ausnahme behandeln habe:

„Eine nicht behandelte Ausnahme des Typs‚System.ArgumentException‘aufgetreten in System.Drawing.dll

Zusätzliche Information: Parameter ist nicht gültig.

Hier ist die Funktion, die ich bin mit dem Byte-Array in ein Bild zu konvertieren:

public static Image imageFromByteArray(byte[] bytearray) 
     { 
      Image img; 
      ImageConverter imgCon = new ImageConverter(); 
      img=(Image)imgCon.ConvertFrom(bytearray); 
      return img; 
     } 

I

imageFromByteArray((byte[])obj[2]); 

zu nennen versucht, aber es hat nicht funktioniert, auch mit einer anderen Funktion, die wandelt ein Objekt in ein Byte-Array um:

public static byte[] objectToByteArray(object obj) 
     { 
      BinaryFormatter bf = new BinaryFormatter(); 
      MemoryStream ms = new MemoryStream(); 
      bf.Serialize(ms, obj); 
      return ms.ToArray(); 
     } 
+0

Was ist das Problem bei der Verwendung der zweiten Methode, 'objectToByteArray' – Stefan

+0

@Stefan das gleiche Problem – Stevie

+0

Sieht aus wie' ConvertFrom '' 'Objekt' als Parameter, nicht ein Byte-Array? – Stefan

Antwort

0

Ich habe die Lösung gefunden. Zuvor hatte ich das Bild manuell zur Datenbank hinzugefügt, weshalb es sich so seltsam verhielt. Um von meinem Programm erkannt zu werden, müssen alle Bilder programmatisch hinzugefügt werden.

Verwandte Themen