社区
疑难问题
帖子详情
如何将视频保存到数据库
seakang
2003-05-10 04:07:57
本人要做视频采集,导入并存储到数据库
用vb,sql server如何实现
用ado对象访问
...全文
2516
60
打赏
收藏
如何将视频保存到数据库
本人要做视频采集,导入并存储到数据库 用vb,sql server如何实现 用ado对象访问
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
60 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
seakang
2003-05-30
打赏
举报
回复
txz1228兄台用小马哥的代码存储视频,
但是如何读出来呢,
麻烦把编的程序发过来
有重谢!!!
发project过来
mailto:seakang22@eyou.com
jimmyxing
2003-05-29
打赏
举报
回复
非常好的提议!
我觉得大力同志的方法可行,存储目录路径就可以了嘛。
seakang
2003-05-29
打赏
举报
回复
存进去后,
如何读出来
dreamer2002
2003-05-29
打赏
举报
回复
用image字段。
下面的代码来自大力(http://expert.csdn.net/Expert/topic/1666/1666858.xml?temp=.7174188
)的
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str
下面是一个拷贝视频到SQL Server的pubs数据库的例子, 表名pub_info, 字段名logo,图像文件名picture.bmp,保存到pub_id='0736'记录
sp_textcopy @srvname = 'ServerName',
@login = 'Login',
@password = 'Password',
@dbname = 'pubs',
@tbname = 'pub_info',
@colname = 'logo',
@filename = 'c:\movie.avi',
@whereclause = " WHERE pub_id='0736' ",
@direction = 'I'
seakang
2003-05-28
打赏
举报
回复
数据库可以采用微软的Access97或者SQL Server来进行,首先新建一张表,取名为Ta
ble,添加三个字段,分别是:姓名 Char型(SQL Server中)文本型(Access中);编号
Char型(SQL Server中)文本型(Access中);照片image型(SQL Server中)OLE对象(
Access中),设计好后存盘。为了可以进行远程调用,我们采用ODBC的方法进行,双击打
开控制面板里的ODBC数据源,界面如图1所示:
点“系统DSN”选项卡,按“添加”按钮选择对应的数据源驱动程序Access的*.mdb或
者SQL Server,依照添加向导加添加数据源,下面就可以开始程序的编写了。
二、 程序的编写
运行VB,新建一个工程。本程序采用ADO控件和动态链接库访问数据库,需要加入ADO
的运行库,单击“工程\引用”菜单,出现引用对话框,选择Microsoft ActiveX Data Ob
jects2.0 Library并确定。
添加一个Form,四个Label控件,两个TextBox控件,一个PictureBox控件,一个ADOD
C控件,三个CommandButton控件,一个CommandDialog控件,如果ADODC和CommandDialog控
件没有出现在工具框上,请单击菜单“工程\部件”。点“控件”选项卡,在其中选中Mic
rosoft ADO Data Control 6.0(OLEDB)和Microsoft Common Dialog Control 6.0两项按“
确定”按钮。
下面是以上各个控件的一些属性:
Form1.MaxButton=False
Label1.Caption=姓名:
Label2.Caption=编号:
Label3.Name= ResName
Label3.BackColor= &H80000009&
Label3.BorderStyle=1-Fixed Single
Label3.DataField=姓名
Label3.DataSource= AdoCtr
Label4.Name= ResNumb
Label4.BackColor= &H80000009&
Label4.BorderStyle=1-Fixed Single
Label4.DataField=编号
Label4.DataSource= AdoCtr
Text1.Name= Names
Text2.Name= Numb
CommonDialog1.Name= CDlg
Adodc1.Name=AdoCtr
CommonButton1.Name=PreView
CommonButton1.Caption=预览
CommonButton2.Name=Save
CommonButton2.Caption=保存
CommonButton3.Name= Update
CommonButton3.Caption=更新
PictureBox1.Name= PicBox
PictureBox1.AutoSize=False
PictureBox1.AutoRedraw=False
PictureBox1.DataField=照片
PictureBox1.DataSource=AdpCtr
下面是程序代码:
′此工程需有Microsoft ActiveX Data Object 2.1 Library(msado15.dll)
Dim Constr As String ′ODBC路径
Dim FileName As String ′图片文件名
Const BLOCKSIZE = 4096 ′每次读写块的大小
Dim ADOCon As New ADODB.Connection ′ADODB Connection对象
Dim ADORst As New ADODB.Recordset ′ADODB Recordset 对象
Dim ADOFld As ADODB.Field ′ADODB Field 对象
------------------------
Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String)
Dim byteData() As Byte ′定义数据块数组
Dim NumBlocks As Long ′定义数据块个数
Dim FileLength As Long ′标识文件长度
Dim LeftOver As Long′定义剩余字节长度
Dim SourceFile As Long ′定义自由文件号
Dim i As Long ′定义循环变量
SourceFile = FreeFile ′提供一个尚未使用的文件号
Open DiskFile For Binary Access Read As SourceFile ′打开文件
FileLength = LOF(SourceFile) ′得到文件长度
If FileLength = 0 Then ′判断文件是否存在
Close SourceFile
MsgBox DiskFile & ″ 无 内 容 或 不 存 在 !″
Else
NumBlocks = FileLength \ BLOCKSIZE ′得到数据块的个数
LeftOver = FileLength Mod BLOCKSIZE ′得到剩余字节数
Fld.Value = Null
ReDim byteData(BLOCKSIZE) ′重新定义数据块的大小
For i = 1 To NumBlocks
Get SourceFile, , byteData() ′ 读到内存块中
Fld.AppendChunk byteData() ′写入FLD
Next i
ReDim byteData(LeftOver) ′重新定义数据块的大小
Get SourceFile, , byteData() ′读到内存块中
Fld.AppendChunk byteData() ′写入FLD
Close SourceFile ′关闭源文件
End If
End Sub
----------------------
Private Sub Form_Load()
Constr = ″DSN=image″ ′定义ODBC连接
ADOCon.Open Constr ′创建一个连接
ADORst.Open ″table″, ADOCon, adOpenDynamic, adLockOptimistic
′打开一个ADO动态集 表名为table
Set AdoCtr.Recordset = ADORst ′将动态集赋给ADO控件
End Sub
----------------------
Private Sub Form_Unload(Cancel As Integer)
′记得关闭打开的数据集,释放资源
ADORst.Close
ADOCon.Close
Set ADORst = Nothing
Set ADOCon = Nothing
End Sub
----------------------
Private Sub PreView_Click()
′显示打开文件的公用对话框,选择需要加入数据库的图片
CDlg.Filter = ″位图(*.bmp)|*.bmp″
CDlg.ShowOpen
FileName = CDlg.FileName
PicBox.Picture = LoadPicture(FileName) ′预览图片
End Sub
----------------------
Private Sub Save_Click()
ADORst.AddNew ′新增纪录
ADORst(″姓名″).Value = Names.Text ′给动态集的第一个字段赋值
ADORst(″编号″).Value = Numb.Text ′给动态集的第二个字段赋值
Set ADOFld = ADORst(″照片″) ′给ADODB.Field对象赋值
Call SaveToDB(ADOFld, FileName) ′调用子程序,给第三个字段(image)赋值
ADORst.Update
End Sub
----------------------
Private Sub Update_Click()
′重新打开纪录集,刷新纪录
ADORst.Close
ADOCon.Close
Set ADORst = Nothing
Set ADOCon = Nothing
ADOCon.Open Constr
ADORst.Open ″table″, ADOCon, adOpenDynamic, adLockOptimistic
Set AdoCtr.Recordset = ADORst
End Sub
程序运行后的结果如图2。
本程序在VB6.0/Windows98/WindowsNT下编译通过。
seakang
2003-05-28
打赏
举报
回复
楼上的可否把project发到我的信箱里
seakang22@eyou.com
seakang22@sohu.com
txz1228
2003-05-27
打赏
举报
回复
我用vb写的程序可以将小的视频文件放到smsqlserver 2000中,不大于100M,当我将一张VCD数据500M放入数据库时,用 “yoki(小马哥)”的代码就不行了,程序提示rst的容量不足,我想可能是将VCD数据读一部份就立即写入数据库,然后再读下一部分,在继续上一次写入的地方追加新的数据,只有这样才能解决容量不足的问题。请大家帮忙,给出这一部分的代码。
zhg_best2000
2003-05-23
打赏
举报
回复
不知道微软的Yukon数据库出来后,并发性能可否提升。
pengdali
2003-05-22
打赏
举报
回复
原贴:
http://expert.csdn.net/Expert/TopicView1.asp?id=1594455
另:
如果报textcopy不是可执行文件的话,你就到
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
目录下拷备 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn
pengdali
2003-05-22
打赏
举报
回复
i是读入
o是读出
pengdali
2003-05-22
打赏
举报
回复
用image类型
方法:
1、建立过程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str
2、建表和初始化数据
create table 表名 (编号 int,image列名 image)
go
insert 表名 values(1,0x)
insert 表名 values(2,0x)
go
3、读入
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2
go
4、读出成文件
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2
go
ccat
2003-05-22
打赏
举报
回复
把视频存进数据库是一件很奇怪的事吗?我不觉得呀~我看这是一个趋势。
不过要想提高视频数据库的性能,肯定得灵活使用一些手段,比如把存放视频的表放到一个单独的物理存储器中。
想要使用关系型数据库强大的信息管理能力,难以避免的要牺牲一些性能(同简单的文件系统相比)。这是没办法的事,根据情况取舍吧。
xdf_hubei
2003-05-22
打赏
举报
回复
用户数量少,可以考虑放到数据库中,如果CLIENT端用户数量多,就算你的服务器受的了,网络一般也受不了啊
就算你存放MPG4格式,连续播放码流也不低,除非质量很差,用户10,100,1000,你看看效果?受不了的
xdf_hubei
2003-05-22
打赏
举报
回复
楼上的,你难道不能在数据库中只存放文件名,路径在别的地方存放行不行,到时候变动,只用变动一个
我就见过将视频存到ACCESS里面的,MDB文件有30GB
是德国一个工作做的监控软件
philipscn
2003-05-22
打赏
举报
回复
视频数据只是一个概念,在媒体资产管理系统中用的比较多,在这类的系统中,将视频文件存入数据库还是很有必要的!
zhuimeng313
2003-05-22
打赏
举报
回复
guan zhu
jeremy201
2003-05-22
打赏
举报
回复
视屏应该存数据库中为好,若存路径,有局限性,如下:
当你要把你机器上的视屏文件存放到另外的数据库服务器中,若是存路径,那么,当你的电脑电脑关掉后,另外一个人访问数据库中的视频文件,那他怎么看的了。所以还是存到数据库中为好。
ilylhfe
2003-05-20
打赏
举报
回复
如何转成2进制~~
mauriceliu
2003-05-20
打赏
举报
回复
哈!我在Oracle中就用LOB字段直接存储视频,感觉不错。但是考虑到数据库服务性能的问题,我还是按时间分段限制文件大小。只是客户端在运行存取LOB对象时,动态内存分配巨大无比,不知道是什么问题。
nmgdjq
2003-05-20
打赏
举报
回复
请问QQ是如何将图片进行存储的呢?是路径还是存文件?
加载更多回复(40)
Android经典源码全集[简单易懂]
Android经典源码全集[简单易懂],共88套代码,完整有效,已全部测试!
Android 开发即时聊天工具 YQ (更新)
Android 开发即时聊天工具 YQ ,仿QQ,实现网络即时聊天。
python
保存
视频
或者图片地址到mysql
数据库
,通过pymysql
python
保存
视频
或者图片地址到mysql
数据库
,通过pymysql废话不说,直接开始先创建
数据库
Mon,然后创建表path,然后是python代码插入效果图参考链接 废话不说,直接开始 本代码只是通过pymysql 把本地文件夹下的图片或者
视频
保存
到MySQL
数据库
,关于pymysql的安装参考其他博文。 先创建
数据库
Mon,然后创建表path,然后是python代码 create table if not exists path (id int,p varchar(100)) engine=
scrapy的数据
保存
到
数据库
下载链接
数据库
的依赖在piplines.py 文件中重写open_spider方法 连接到mysql
数据库
重写process_item方法 将数据
保存
到
数据库
中重写close_spider() 关闭爬虫时关闭
数据库
连接代码解析最后找到setting.py文件中的以下内容并且取消注释并且将指定优先级(优先级是一个 )在native中查看数据验证程序是否成功运行。
富文本
保存
到
数据库
标题 富文本
保存
到
数据库
-idea String html = "<p wx:nodeid='135'>1.地方</p><p wx:nodeid='156'>2.第三方"; // 前端传过来的富文本内容 String temp = HtmlUtils.htmlEscapeHex(html); System.err.println("存
数据库
=\r\n" + temp); resume.setExperience(temp); Strin
疑难问题
22,300
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章