FileStream
Sql サーバー データベースからオーディオ バイナリを取得して使用する際に問題があります。試しMemoryStream
ましたがうまくいきませんでした。Windowsフォームを使用してオーディオバイナリをデータベースに挿入するための私のコードは次のとおりです。
try
{
SqlCommand cmd = null;
SqlParameter param = null;
cmd = new SqlCommand("INSERT INTO Audio(audioBinary) VALUES(@BLOBPARAM)", conn);
FileStream fs = null;
fs = new FileStream("..\\..\\audio\\a3.mp3", FileMode.Open, FileAccess.Read);
Byte[] blob = new Byte[fs.Length];
fs.Read(blob, 0, blob.Length);
fs.Close();
param = new SqlParameter("@BLOBPARAM", SqlDbType.VarBinary, blob.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, blob);
cmd.Parameters.Add(param);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Successful");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
上記のコードは問題なく動作しましたが、Windows Phone 7 アプリケーションでデータを取得して使用する際に問題が発生します。さらに、データは Web サービスから取得されました。これは、バイナリ データを取得するための私のコードです。
me1 が MediaElement であると仮定すると、バイナリ データは testImage 内に保存されます。
ArrayOfBase64Binary testImage = new ArrayOfBase64Binary();
byte[] audioArr = new byte[1];
FileStream fs = null;
audioArr = testImage[0];
text.Text = audioArr[0].ToString();
fs.Write(audioArr, 0, audioArr.Length);
me1.SetSource(fs);
me1.Play();
バイナリ データを TextBlock に表示しようとしたところ、整数が返されましたが、ストリームに書き込もうとしたときにエラーが発生しました。
test.dll で 'System.NullReferenceException' 型の未処理の例外が発生しました