神话,用insert语句插入图片!!

noApple 2003-11-14 11:26:31
到底行不行?
...全文
177 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ryan1005 2003-11-19
  • 打赏
  • 举报
回复
不能?在网上搜一搜怎么在delphi中存取jpg图片,可能会有帮助,怎么会不能那,想不通。
tangxc2003 2003-11-19
  • 打赏
  • 举报
回复
严重的完全的彻底的同意pengdali(大力 V3.0) !!!
qqjj7758 2003-11-19
  • 打赏
  • 举报
回复
lemonchen 2003-11-19
  • 打赏
  • 举报
回复
如果只在数据库中存放文件路径的话,要在网络中其他客户端使用有问题
lvltt 2003-11-19
  • 打赏
  • 举报
回复
to 楼上:

如果报textcopy不是可执行文件的话,你就到
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
目录下拷备 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn
yellowpaper 2003-11-19
  • 打赏
  • 举报
回复
'textcopy' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NULL
sunzhikai1978 2003-11-18
  • 打赏
  • 举报
回复
to 五星上将(大力)

您真牛B,最近在忙什么呢?

w_rose 2003-11-14
  • 打赏
  • 举报
回复
ADO的appendchunck操作?!

太久远,记不太清了。
noApple 2003-11-14
  • 打赏
  • 举报
回复
必须再数据库中存放图片本身
我事先是可以得到图片的二进制数据的
曾考虑到先把图片的二进制数据转化成base64编码存到数据库中,但这样一来,我的图片数据就不能为别的程序使用。所也我还是决定存放图片原来的二进制数据,又必须用insert语句(原来做那个系统的时候没有考虑二进制数据,只有字符串和数字)来实现,所以有此一问的
noApple 2003-11-14
  • 打赏
  • 举报
回复
谢谢诸位的关注啦,因为工作的需要,所以有这个需求
Dennis618 2003-11-14
  • 打赏
  • 举报
回复
哈哈哈哈. 沒辦法!
pengdali 2003-11-14
  • 打赏
  • 举报
回复
insert 放文件路径吧,方便又高效
txlicenhe 2003-11-14
  • 打赏
  • 举报
回复
create table t1(a char(4))
insert t1 values('图片')
哈哈,开个玩笑

既然不喜欢上面的方式,能不能考虑只存图版的文件名呢?
zjcxc 元老 2003-11-14
  • 打赏
  • 举报
回复
一般的解决是在程序中处理.

楼主可以参考我的贴子:
数据库中存/取文件(zjcxc)
http://expert.csdn.net/Expert/topic/2403/2403509.xml?temp=.589184
zjcxc 元老 2003-11-14
  • 打赏
  • 举报
回复
不能,你没办法得到图片的二进制数据.
noApple 2003-11-14
  • 打赏
  • 举报
回复
两位老兄老拿这个吓唬人,我可要用insert语句呀
pengdali 2003-11-14
  • 打赏
  • 举报
回复
用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
lynx1111 2003-11-14
  • 打赏
  • 举报
回复
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:\图片.avi','where 编号=1','I' --注意条件是 编号=1

sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.wav','where 编号=2','I' --注意条件是 编号=2

go

4、读出成文件
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.avi','where 编号=1','O' --注意条件是 编号=1

sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.wav','where 编号=2','O' --注意条件是 编号=2
go

把image列清空:update 表 set 列=null
zjcxc 元老 2003-11-14
  • 打赏
  • 举报
回复
用insert真的不行.

要不你这样考虑,将存储也改为存储过程处理,例如:

create proc p_insert @img image
as
insert into tb_img values(@img)
go
zjcxc 元老 2003-11-14
  • 打赏
  • 举报
回复
既然程序中,没必要一定要用insert语句吧?


'*************************************************************************
'**
'** 使用 ADODB.Stream 保存/读取文件到数据库
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
'**
'** ----- 数据库连接字符串模板 ---------------------------------------
'** ACCESS数据库
'** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
'** ";Data Source=数据库名"
'**
'** SQL数据库
'** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
'** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'**
'*************************************************************************
'
'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String

'数据库连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\My Documents\客户资料1.mdb"

'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile "c:\test.doc"
End With

'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "表", iConc, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields("保存文件内容的字段") = iStm.Read
.Update
End With

'完成后关闭对象
iRe.Close
iStm.Close
End Sub

'从数据库中读取数据,保存成文件
Sub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConc As String

'数据库连接字符串
iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"

'打开表
Set iRe = New ADODB.Recordset
iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=64"

'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("img")
.SaveToFile "c:\test.doc"
End With

'关闭对象
iRe.Close
iStm.Close
End Sub
加载更多回复(1)

34,499

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧