关于从数据库调出MP3地址在WMP进行播放的问题

关于从数据库调出MP3地址在WMP进行播放的问题,第1张

核心代码

t_id=trim(request("id"))

sql="select from 表 where id="&t_id&""

set rs=connexecute (sql)

if rseof then

responsewrite "该音乐不存在"

else

url=rs("url")

end if

可以保存!

在Access对它的字段说明中,有这样一条说明:

OLE 对象

Microsoft Access 表中链接或嵌入的对象(例如 Microsoft Excel 电子表格、Microsoft Word 文档、图形、声音或其他二进制数据)。

也就是说当一个字段的类型被设置为OLE类型时,它就可以保存二进制数据,其中也包括MP3。

在Access数据表的数据录入中,你可以把你的MP3文件复制后,直接粘贴在该字段中,(OLE对象就是这么一种通用 *** 作),当一个字段有MP3数据时,你可以双击它,Access会自动调用Windows关联的播放器来播放MP3。而你并不用关心处理这些数据的程序如何写

1、扇贝听力:是一个英语听力练习软件,就是只许听声音不许看文字,听不懂,难受的快要掐死自己了再去看原文。用这样的方法听完一句句,再听完一篇篇,100篇就能见效。扇贝听力就是这样一个软件,我们就是要用这样的方法来打磨你的耳朵,训练你的理解,锻炼出真正的听力。

2、有道词典:有道网络释义基于有道强大的搜索引擎后台,借助有道搜索的实时网页抓取数据和海量信息存储技术,形成了一套没有上限、自动扩充、实时更新的词典数据库

3、喜马拉雅:喜马拉雅FM是国内最大音频分享平台,2013年3月手机客户端上线,一年半时间手机用户规模已突破8000万,成为国内发展最快、规模最大的在线移动音频分享平台。

背景

MySQL 一直以来都有 TEXT、BLOB 等类型用来存储、视频等大对象信息。比如一张,随便一张都 5M 以上。视频也是,随便一部视频就是 2G 以上。

假设用 MySQL 来存放**视频等信息,一部是 2G,那么存储 1000 部就是 2TB,2TB 也就是 1000 条记录而已,但是对数据库性能来说,不仅仅是看记录数量,更主要的还得看占用磁盘空间大小。空间大了,所有以前的经验啥的都失效了。

所以一般来说存放这类信息,也就是存储他们的存放路径,至于文件本身存放在哪里,那这就不是数据库考虑的范畴了。数据库只关心怎么来的快,怎么来的小。

举例

虽然不推荐 MySQL 这样做,但是也得知道 MySQL 该怎么做才行,做到心里有数。比如下面一张微信,大概 5M 的样子。

root@ytt:/var/lib/mysql-files# ls -sihl 微信_20190711095019jpg274501 54M -rw-r--r-- 1 root root 54M Jul 11 07:17 微信_20190711095019jpg

拷贝 100 份这样的来测试

root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信_20190711095019jpg "$i"jpg;done;

root@ytt:/var/lib/mysql-files# ls

100jpg   17jpg  25jpg  33jpg  41jpg  4jpg   58jpg  66jpg  74jpg  82jpg  90jpg  99jpg  f8tsv

10jpg    18jpg  26jpg  34jpg  42jpg  50jpg  59jpg  67jpg  75jpg  83jpg  91jpg  9jpg   微信_20190711095019jpg

1111jpg  19jpg  27jpg  35jpg  43jpg  51jpg  5jpg   68jpg  76jpg  84jpg  92jpg  f1tsv

11jpg    1jpg   28jpg  36jpg  44jpg  52jpg  60jpg  69jpg  77jpg  85jpg  93jpg  f2tsv

12jpg    20jpg  29jpg  37jpg  45jpg  53jpg  61jpg  6jpg   78jpg  86jpg  94jpg  f3tsv

13jpg    21jpg  2jpg   38jpg  46jpg  54jpg  62jpg  70jpg  79jpg  87jpg  95jpg  f4tsv

14jpg    22jpg  30jpg  39jpg  47jpg  55jpg  63jpg  71jpg  7jpg   88jpg  96jpg  f5tsv

15jpg    23jpg  31jpg  3jpg   48jpg  56jpg  64jpg  72jpg  80jpg  89jpg  97jpg  f6tsv

16jpg    24jpg  32jpg  40jpg  49jpg  57jpg  65jpg  73jpg  81jpg  8jpg   98jpg  f7tsv

我们建三张表,分别用 LONGBLOB、LONGTEXT 和 VARCHAR 来存储这些信息

mysql> show create table tt_image1G

1 row

Table: tt_image1

Create Table: CREATE TABLE `tt_image1` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`image_file` longblob,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1 row in set (000 sec)

mysql> show create table tt_image2G

1 row

Table: tt_image2

Create Table: CREATE TABLE `tt_image2` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`image_file` longtext,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1 row in set (000 sec)

mysql> show create table tt_image3G

1 row

Table: tt_image3

Create Table: CREATE TABLE `tt_image3` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`image_file` varchar(100) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1 row in set (000 sec)

我们来给三张表插入 100 张(插入前,建议把 max_allowed_packet 设置到最大)

tt_image1

root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

do mysql -S /var/run/mysqld/mysqldsock -e "insert into ytttt_image1(image_file)

values (load_file('/var/lib/mysql-files/$ijpg'))";done;

tt_image2

root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;

do mysql -S /var/run/mysqld/mysqldsock -e "insert into ytttt_image2(image_file)

values (hex(load_file('/var/lib/mysql-files/$ijpg')))";done;

tt_image3

root@ytt:/var/lib/mysql-files# aa='begin;';for i in `seq 1 100`;

do aa=$aa"insert into ytttt_image3(image_file) values

('/var/lib/mysql-files/$ijpg');";

done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqldsock -e "`echo $aa`";

检查下三张表记录数

mysql> select 'tt_image1' as name ,count() from tt_image1 union allselect 'tt_image2',count() from tt_image2 union all select 'tt_image3', count() from tt_image3;+-----------+----------+| name      | count() |+-----------+----------+| tt_image1 |      100 || tt_image2 |      100 || tt_image3 |      100 |+-----------+----------+3 rows in set (000 sec)

看下文件大小,可以看到实际大小排名,LONGTEXT 字段存储的最大,LONGBLOB 字段缩小到一半,最小的是存储路径的表 tt_image3。所以这里从存储空间来看,存放路径最占优势。

root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image274603 11G -rw-r----- 1 mysql mysql 11G Jul 11 07:27 tt_image2ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1ibd274605  80K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3ibd

那么怎么把取出来呢?

tt_image3 肯定是最容易的

mysql> select from tt_image3;+----+----------------------------+| id | image_file                 |+----+----------------------------+|  1 | /var/lib/mysql-files/1jpg |+----+----------------------------+100 rows in set (000 sec)

tt_image1 直接导出来二进制文件即可,下面我写了个存储过程,导出所有。

mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN      DECLARE i,cnt INT DEFAULT 0;      SELECT COUNT() FROM tt_image1 WHERE 1 INTO cnt;      WHILE i < cnt DO        SET @stmt = CONCAT('select image_file from tt_image1  limit ',i,',1 into dumpfile ''/var/lib/mysql-files/image',i,'jpg''');        PREPARE s1 FROM @stmt;        EXECUTE s1;        DROP PREPARE s1;      SET i = i + 1;      END WHILE;      END$$mysql> DELIMITER ;mysql> call sp_get_image;

tt_image2 类似,把 select 语句里 image_file 变为 unhex(image_file) 即可。

总结

这里我举了个用 MySQL 来存放的例子,总的来说有以下三点:

占用磁盘空间大(这样会带来各种各样的功能与性能问题,比如备份,写入,读取 *** 作等)

使用不易

还是推荐用文件路径来代替实际的文件内容存放

1维普资讯中文科技期刊数据库(期刊论文)

2中国知网(期刊、学位论文)(网上包库)

3中国知网(期刊、学位论文)(本地镜像)

4万方数字资源系统(学位论文、会议论文、外文文献)

5读秀学术搜索

6超星数字图书馆(电子图书、讲座、读秀学术搜索)

7书生之家数字图书馆(电子图书)

8煤炭数字图书馆暨安全生产数字图书馆

9中国资讯行高校财经数据库(统计数据、商业报告、证券消息等)

10搜数网(统计数据)

11国务院发展研究中心信息网(商业报告、统计数据等)

12(国泰安)中国股票市场交易数据库(股票交易数据)

13高校教学资源库(教学课件、多媒体素材等)

14方略学科导航(我校主要学科网络学术资源,包括煤炭经济、半岛经济)

15爱迪科森就业库(考研、应用英语、职业认证培训、出国考试等视频课程)

16新东方多媒体学习库

17VIPExam考试学习资源数据库(司法、财经类职业资格等考试题库)

18E线图情

19山东高校图书馆随书光盘资源联合中心(免费资源)

20国家精品课程资源网(免费资源,教学课件、教案、视频课程等)

21中国大学视频公开课(免费资源,视频课程)

22网易公开课(免费资源,中外视频课程)

23厦门大学学术库(免费资源)

24汉斯出版社中文学术期刊(免费资源)

25e读学术搜索

Elsevier(sciencedirect)是荷兰一家全球著名的学术期刊出版商,每年出版大量的学术图书和期刊,大部分期刊被SCI、SSCI、EI收录,是世界上公认的高品位学术期刊。涉及众多学科:计算机科学、工程技术、能源科学、环境科学、材料科学、数学、物理、化学、天文学、医学、生命科学、商业、及经济管理、社会科学等。

Wiley出版社1807年创建于美国,是一家具有超过200年历史的全球知名的出版机构,Wiley Online Library为全学科期刊全文数据库,出版物涵盖学科范围广泛——包括化学、物理学、工程学、农学、兽医学、食品科学、医学、护理学、口腔医学、生命科学、心理学、商业、经济学、社会科学、艺术、人类学等多个学科大约1600多种期刊,以及很多其它重要的跨学科领域的期刊。

Web of Science是获取全球学术信息的重要数据库,它收录了全球13000多种权威的、高影响力的学术期刊,内容涵盖自然科学、工程技术、生物医学、社会科学、艺术与人文等领域。Web of Science 还包括著名的三大引文索引数据库(SCI、SSCI、A&HCI)。

Taylor & Francis科技期刊数据库,拥有全球最多社会科学期刊,提供550余种经专家评审的高质量科学与技术类期刊,其中近80%的期刊被Web of Science 收录。

ProQuest学术平台是ProQuest各类数字信息资源的一站式检索系统,目前覆盖超过200个数据库,数据库类型包括学术期刊数据库、学位论文数据库、音视频资源数据库、电子书数据库、原始资源数据库与报纸数据库等,内容覆盖自然科学、社会科学、艺术及人文科学等多学科领域。

世界四大期刊:nature《自然》、science《科学》、CELL《细胞》、PNAS《美国科学院院报》

学术文献下载器(wxdownorg)提供各种类型文献检索下载,涵盖大量外文期刊数据库,包括上面提到的。

1、首先在电脑中,找到并点击电脑中的格式工厂。

2、然后在打开的格式工厂中,点击音频选项。

3、然后在打开的音频页面中,找到并点击MP3。

4、接着在打开的页面中,点击添加文件,点击一个音频文件。

5、最后点击窗口下方的-打开选项,然后点击改变按钮,就可以了。

以上就是关于关于从数据库调出MP3地址在WMP进行播放的问题全部的内容,包括:关于从数据库调出MP3地址在WMP进行播放的问题、access数据库可以保存和读取mp3文件吗,求代码,谢谢、有什么软件可以听高中英语听力等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10179767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存