我在使用FileStream
从Sql server数据库中检索和使用音频二进制文件时遇到问题。我试过了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'类型的未处理异常
答案 0 :(得分:0)
FileStream fs = null;
....
fs.Write(audioArr, 0, audioArr.Length);
如果尝试使用尚未分配的FileStream对象,则会出现NullReferenceException。在尝试写入之前创建一个新的FileStream对象。