0

FileStreamSql サーバー データベースからオーディオ バイナリを取得して使用する際に問題があります。試し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' 型の未処理の例外が発生しました

4

1 に答える 1

0
FileStream fs = null;

....

fs.Write(audioArr, 0, audioArr.Length);

まだ割り当てられていない FileStream オブジェクトを使用しようとすると、NullReferenceException が発生します。書き込みを試みる前に、新しい FileStream オブジェクトを作成します。

于 2013-07-27T09:07:21.507 に答える