access里的 ole对象 这个数据类型怎么用sql语句中表示 ,比如我要用用sql语句给表(数据中心)添加一个
百度到可以用 BINARY 添加一个数据类型为二进制的,但他长度只有510.有什么方法让这个数字加长也可以。 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
ACCESS 数据库ole对象数据类型字段是无法直接用SQL语句进行添加和修改文件的。但是这种数据类型字段里存储的ole对象可以直接用SQL语句删除掉,例如:
删除OLE对象字段不为为空的那些记录
delete from table1 where col_ole is not null
清空OLE对象字段里存储的文件
update table1 set col_ole=null
至于添加和修改ole对象SQL语句则是无能为力。ACCESS数据表添加、修改、删除ole对象可以采用手动的方式进行操作很方便,也可以用代码来实现。
下面是利用ADO数据访问对象的Stream流对象的代码解决示例。注意代码需要应用ADO2.5以上版本(于VBE编辑器 菜单——工具——引用 勾选Microsoft ActiveX Data Objects 2.5 Library) 假设C盘根目录有1.mp3, 2.mps, pic1.jpg 这几个音乐和图片文件以及空数据表如图
为ACCESS窗体命令按钮编写下列单击事件过程:
Private Sub Command0_Click()
Dim cn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strm As New ADODB.Stream
Set rs.ActiveConnection = CurrentProject.Connection
'打开ADO流对象
With strm
.Type = adTypeBinary '二进制模式
.Open
End With
'打开记录集
rs.Open "files", , adOpenKeyset, adLockOptimistic
'添加一条新记录
rs.AddNew
rs!F_id = "001"
rs!F_Name = "歌曲1"
strm.LoadFromFile "C:\1.mp3" '读取音乐文件
rs!file = strm.Read '存入音乐文件
rs.Update '保存新增
'再添加一条新记录
rs.AddNew
rs!F_id = "002"
rs!F_Name = "歌曲2"
strm.LoadFromFile "C:\2.mp3"
rs!file = strm.Read
rs.Update
'将刚才存储的歌曲2删除掉
rs.MoveLast
rs!file = Null
rs.Update
'将最后那条记录改为存储图片1
rs.MoveLast
rs!F_Name = "图片1"
strm.LoadFromFile "C:\pic1.jpg"
rs!file = strm.Read
rs.Update
'释放对象
rs.Close
strm.Close
Set rs = Nothing
Set strm = Nothing
End Sub
点击命令按钮后得到下图效果
再给一点有用的建议,ACCESS数据库的容量有限只有2G大小,如果在数据表里存储大量的图片和音乐这类文件,数据库会很容易变得体积庞大而效率低下甚至不可用。如果需要存储大量文件型数据时建议数据表里只存储文件路径而不要实际存储文件,这种做法将更加可取。
我已经用其他方法构造了这个语句,可以用SQL新建这个数据类型了。作为开发者,就别指望客户能帮你手动新建这样的东西。
您说的没错,在创建表和修改表时用SQL定义一个OLE类型字段是可以实现的。但是向OLE字段里写入文件数据我暂时还未发现通过运行SQL语句得以实现的办法,本人愿意虚心请教。