WP7正在从数据库中检索音频二进制文件

本文关键字:检索 音频 二进制文件 数据库 WP7 | 更新日期: 2023-09-27 18:24:59

我在使用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"的未处理异常

WP7正在从数据库中检索音频二进制文件

FileStream fs = null;
....
fs.Write(audioArr, 0, audioArr.Length);

如果您尝试使用尚未分配的FileStream对象,则会得到NullReferenceException。在尝试写入之前,创建一个新的FileStream对象。