如何使用 SQL2005 插入 image

2024-12-28 05:44:56
推荐回答(4个)
回答1:

例:
insert tb(text列, image 列)
values(’内容’, 0×123)

Text– 直接用当字符串输入操作就行了
image–是SQL05之前的版本时使用的类型
直接操作,在SQL05以上版本用varbinary(max)–类型

以插入图片为例:

SQL2000用
方法:
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) — 必须的,且不是null
insert 表名 values(2,0x) — 必须的,且不是null
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

************如果报textcopy不是可执行文件的话,你就到
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
目录下拷备 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn

SQL2005直接用
INSERT INTO myTable(FileName, FileType, Photo)
SELECT ‘Roy1.jpg’ AS FileName,
‘.JPG’ AS FileType,
* FROM OPENROWSET(BULK N’C:\Roy1.jpg’, SINGLE_BLOB) AS Document

回答2:

SQL 2005 Image只能存二进制的数据,还是通过程序将图片转成二进制流,然后保存到数据库吧

下面是转自百度空间里的:
///


/// 将照片转换为二进制数组
///

///
///
private byte[] PhotoToArray( string path )
{
FileStream stream = new FileStream( path , FileMode.Open , FileAccess.Read ) ;
byte[] bufferPhoto =new byte[stream.Length] ;
stream.Read( bufferPhoto,0,Convert.ToInt32( stream.Length ) ) ;
stream.Flush();
stream.Close();

return bufferPhoto ;
}

//把二进制的图片插到数据库
private void Save(byte[] image)
{
string sql = "insert into table2(aaa,photo) values(@aaa,@photo)";
SqlParameter[] param=new SqlParameter[2];
param[0] =new SqlParameter("@aaa",SqlDbType.Int);
param[0].Value = 1;
param[1]= new SqlParameter("@photo",SqlDbType.Image);
param[1].Value= image;

SqlConnection conn= new SqlConnection();
conn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings[0];

SqlCommand commd= new SqlCommand(sql,conn);
commd.Parameters.Add(param[0]);
commd.Parameters.Add(param[1]);

try
{
conn.Open();
commd.ExecuteNonQuery();
MessageBox.Show("把图片成功的插入数据库");
}
catch(Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}

回答3:

不能直接通过sql2005的Management Studio插入数据,除非是NULL值

image中存储的是Byte[]
可以通过其他编程语言插入值,例如c#

Byte[] fileArray = new Byte[1024];
通过参数的方式把fileArray传给sql语句
SqlCommand 的 Parameters

回答4:

数据库中存图片的路径,
让ImageUrl或者src指向这个路径