数据库存储音乐文件!(求大神!)
帮忙看看这段代码,为什么有错误!!!如果解决!将音乐MP3文件存储到数据库的image类型里!
OpenFileDialog sf = new OpenFileDialog();
sf.Filter = "(*.mp3)|*.mp3";
sf.ShowDialog();
Image img = Image.FromFile(sf.FileName);
conn = new SqlConnection(connectString);
cmd = new SqlCommand("Update Mucis Set mucis=(@img) where id=1", conn);
cmd.Parameters.Add(new SqlParameter("@img", SqlDbType.Image));
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
cmd.Parameters[0].Value = ms.ToArray();
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
ms.Close();
--------------------编程问答-------------------- 大哥 System.Drawing.Imaging.ImageFormat.Jpeg 哪有把mp3转jpg的道理啊,直接用流读取存储就可以了 --------------------编程问答-------------------- 囧 --------------------编程问答-------------------- funxu
有没代码丫,给我看看,流的存储,,
是不是存储路径? --------------------编程问答--------------------
public static void Add( string filePath)
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] myMp3 = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
SqlConnection cn = new SqlConnection("db conn str...... ");
SqlCommand cmd = new SqlCommand("INSERT INTO Test( Mp3) VALUES ( @Mp3) ", cn);
cmd.Parameters.Add("@Mp3 ", SqlDbType.Image, myMp3.Length).Value = myMp3;
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
试试 --------------------编程问答-------------------- 楼主把音乐MP3文件存储到数据库的image类型里是想做什么?你是想把MP3保存在数据库里吗?如果是,就把路径保存在数据库里,读取的时候,调用路径就好了。
--------------------编程问答-------------------- xiaomingtage
我想吧音乐文件保存在数据库中 --------------------编程问答-------------------- 其实我感觉没必要把音乐存到数据库中
这样太繁琐了 干嘛不只存路径
如果真的需要 你可以用流的方式就可以了 --------------------编程问答-------------------- 存成2进制的文件,以image类型存储 --------------------编程问答-------------------- 读取文件 得到 byte[] 数组 直接存 --------------------编程问答-------------------- 4楼正解 --------------------编程问答-------------------- 存个路径多方便啊,并且效率也很高,减少数据库的压力 --------------------编程问答-------------------- 2进制 --------------------编程问答-------------------- LZ,是这句代码出错:mage img = Image.FromFile(sf.FileName);
Image是用来加载图像格式文件的,如果文件没有有效的图像格式,或者如果 GDI+ 不支持文件的像素格式,则此方法将引发 OutOfMemoryException 异常。
你把代码改成:
try
{
FileStream fs = new FileStream(@"c:\test.mp3", FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] myMp3 = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//后面的还是用你的代码
}
catch(Exception ex)
{
}
另外,提个建议:写代码加上try{}catch{}语句,这样帮你定位代码出错位置!
--------------------编程问答-------------------- 强烈不建议文件入库,blob file 也不建议!太依赖数据库了!二进制存读的时候严重占用数据库资源。blob file和直接存地址没区别。
还是直接存文件地址吧。手上一个项目把html文本入库了,运行五年,数据库已经4个多G了,机器本来就老慢的要死。
--------------------编程问答-------------------- 学习! --------------------编程问答-------------------- 先将文件转成流,然后再将流存储到数据库中去就可以了吧! --------------------编程问答-------------------- 先将文件转成流,然后再将流存储到数据库中去就可以了吧!但是还是觉把文件放到硬盘上,然后存地址比较好! --------------------编程问答--------------------
UP --------------------编程问答-------------------- 4楼+1 --------------------编程问答-------------------- 木有尝试过,偶都是存储的路径。 --------------------编程问答-------------------- 严重同意存路径和文件名的方法。直接用linq to sql 调用数据库更简单。 --------------------编程问答-------------------- 存储文件路径好!
补充:.NET技术 , C#