标题:C#程序,怎样实现播放存入ACCESS中的声音
只看楼主
矮油去哪
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-11-25
结帖率:0
 问题点数:0 回复次数:1 
C#程序,怎样实现播放存入ACCESS中的声音
C#程序直接播放文件夹中的声音文件,容易实现,但是这些声音文件容易被删除,改名而出问题。我现在把声音文件序列化存入ACCESS中,但不能播放,请大神帮看看。
新建一个名为 “声音保存” 的ACCESS数据库,建一个名为 “人名” 的表。两个字段,“姓名”和“声音”,声音字段的数据类型为 OLE 对象  
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using
using System.Media;


namespace 播放数据库存放的声音
{
    public partial class Form1 : Form
    {      
        static  string str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=声音保存.mdb;Jet OLEDB:Database Password=;";
        static OleDbConnection con = new OleDbConnection(str);
        OleDbDataAdapter sqlda = new OleDbDataAdapter("select 姓名  from 人名", con);
        DataSet ds = new DataSet();
        SoundPlayer pla = new SoundPlayer();

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {                  
            con.Open();
            ShowInfo();
            con.Close();
        }

        private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {   //双击,在文本框中显示姓名,并读出声音
             string name = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
             if (name != "")
             {               
                 con = new OleDbConnection(str);               
                 OleDbDataAdapter sqlda = new OleDbDataAdapter("select * from 人名 where 姓名='" + name + "'", con);
                 DataSet ds = new DataSet();
                 sqlda.Fill(ds);
        
                 //姓名在第一列
                 textBox1.Text = ds.Tables[0].Rows[0][0].ToString();
                 //声音数据在第二列
                 byte[] data = (byte[])ds.Tables[0].Rows[0][1];
                 //到此能夠获取数据
                 MemoryStream MStream = new MemoryStream(data);
                 //播放声音,不成功,无声。
                 pla.Stream = MStream;
             }
        }
        private void ShowInfo()
        {   //显示姓名      
            sqlda.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
            dataGridView1.ReadOnly = true;
            dataGridView1.AllowUserToAddRows = false;
        }      
    }
}

[此贴子已经被作者于2022-9-17 18:59编辑过]

搜索更多相关主题的帖子: new using 声音 播放 System 
2022-09-17 18:50
qq2889577966
Rank: 4
等 级:业余侠客
威 望:5
帖 子:57
专家分:267
注 册:2021-4-14
得分:0 
简单处理办法,数据库读出后,写入一个临时音频文件,播放该文件就可以,播完了删掉不占空间。
比如取得windows的temp :Environment.GetEnvironmentVariable("temp");
要播放byte的话,省事处理就是用Naudio .Net控件,没源码的我不喜欢用。
2022-09-18 09:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510073-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053884 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved