2016-12-09 9 views
0

私が作業しているC#プロジェクトで問題が発生しました。私は確かに知っているbytearrayをデータベースから画像に変換中にエラーが発生しました

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

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; 
     } 

と私はすべての結果を格納されているこのオブジェクトの配列を有する:私は機能をデータベース行から選択されたすべてのアイテムを含むオブジェクトの配列を取得しますデバッガが私のオブジェクトの3mil以上のバイトを表示するため、オブジェクトobj [2]がデータベースのBLOBであることを示します。私は、オブジェクトからバイト配列を変換しようとする。しかし、私は、私は例外扱いしなかったことを知らされます:

を「型 『System.ArgumentExceptionの』の未処理の例外は

をSystem.Drawing.dll

で発生しました追加情報:パラメータが無効です。

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

私は

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

を呼び出そうとしましたが、それはそれさえも、他の機能と、動作しませんでした。ここで

は、私がイメージにバイト配列に変換するために使用している機能ですオブジェクトをバイト配列に変換します。

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

2番目のメソッド 'objectToByteArray'を使用するときの問題 – Stefan

+0

@Stefan同じ問題 – Stevie

+0

' ConvertFrom'のように、バイト配列ではなくオブジェクトとして 'object'を使用しますか? – Stefan

答えて

0

解決策が見つかりました。前に、私は手動でデータベースに画像を追加しました。これが、それが奇妙な動作をした理由です。 私のプログラムで認識されるためには、すべての画像をプログラムで追加する必要がありました。

関連する問題