如何在SQL server 2005数据库中插入、存储图片 我是一个初学者,请教各位,如果有几个图片,如何保存到SQL server 2005当中呀?没什么思路。我只知道好像用image这个数据类型。最好能用insert into 语句来作,把图片存储到表当中。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ntext、text 和 image用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。ntext可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。text服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。image可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。 注释下面的函数和语句可以与 ntext、text 或 image 数据一起使用。函数 语句 DATALENGTH READTEXT PATINDEX SET TEXTSIZE SUBSTRING UPDATETEXT TEXTPTR WRITETEXT TEXTVALID 请参见ALTER TABLECAST 和 CONVERTCREATE TABLE数据类型转换数据类型DECLARE @local_variableDELETEINSERTLIKESET @local_variableUPDATE使用 Unicode 数据 用控件?难道不能直接插入吗?像insert into abc values(1,2,3) 这样吗 首先你在表中定义一个字段,类型为image然后在应用层把要存如的图片转换为二进制流的形式,因为image实质上就是二进制流,然后再调用insert 语句,把这个图片对应的二进制流存入到表中很简单的 代码有是C#的给你找了一段,你看看吧: RemoteRule remoteRule = (RemoteRule)GetRemoteingObjectByType(typeof(RemoteRule), "remoterule"); DataSet ds = new DataSet(); string PageState = ViewState["PageState"].ToString(); //当页面状态为“new”时,表示要添加记录 if (PageState == "new") { string filename = txt_filename.Text; string filecomment = txt_filecomment.Text; string SlaveFileName = FileUpload1.PostedFile.FileName; //读取所上传的文件的二进制流 这里开始是度二进制流 HttpPostedFile file1 = FileUpload1.PostedFile; int filelength = Convert.ToInt32(file1.InputStream.Length); byte[] FileContent_img = new byte[filelength]; file1.InputStream.Read(FileContent_img, 0, filelength); 已经读出来了 DateTime UploadTime = DateTime.Now.Date; ds = remoteRule.GetRulebyName(filename); if (ds.Tables[0].Rows.Count > 0) { Response.Write("<script>alert('您已经存在该文件名所对应的记录,请先删除后再添加')</script>"); } else { DataRow dr = ds.Tables[0].NewRow(); dr["FileName_ch"] = filename; dr["FileDesc_ch"] = filecomment; dr["SlaveFileName_ch"] = SlaveFileName; dr["FileContent_img"] = FileContent_img; dr["UploadUser_ch"] = this.SystemModuleSettings.UserManage.CurrUserInf["RealName"].ToString(); dr["UploadTime_dt"] = UploadTime; ds.Tables[0].Rows.Add(dr); bool b = remoteRule.UpdateRule(ds); if (b) { Response.Write("<script>alert('添加成功,您可以点击添加按扭继续添加')</script>"); } else { Response.Write("<script>alert('添加不成功')</script>"); } }这个这段代码的作用就是上传问件,不逼全看,只需要知道怎么转换就可以了 05插入图片和文件简单,直接在查询分析器里insert就行了..create table t(photo image)--建表goinsert tselect *from openrowset(bulk N'C:\1.jpg',single_blob) a --N'C:\1.jpg'为路径和图片名-------------------就这样就行了。。05的openrowset功能增强很多,在不少地方都有用到... roy_88 兄台,有关向SQL2005当中插入图片的问题,很感谢你的支持,insert abcselect *from openrowset(bulk N'd:\222\bird1.jpg',single_blob) a但如果是一个表,它有几个字段,其中一个字段是想插入图片的,那怎么办呀?我是一个初学者,我想可能用@一类的东东吧,但不知如何使用,再请教一下高手了.无上感激,谢谢!! insert t(图片列)--指定列select * --这只有一列from openrowset(bulk N'd:\222\bird1.jpg',single_blob) a 楼主下次在CSDN上留言,不要在已经结贴上发信息,偶一般不去看-------- 使用 OPENROWSET 将文件数据大容量插入 varbinary(max) 列中以下示例创建一个用于演示的小型表,并将名为 Text1.txt 的文件(位于 C: 根目录)中的文件数据插入 varbinary(max) 列中。USE AdventureWorksGOCREATE TABLE myTable(FileName nvarchar(60), FileType nvarchar(60), Document varbinary(max))GOINSERT INTO myTable(FileName, FileType, Document) SELECT 'Text1.txt' AS FileName, '.txt' AS FileType, * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS DocumentGO更为详细的信息可到http://msdn.microsoft.com/zh-cn/library/ms190312.aspx此处查看 <二进制数据>请问各位同仁,数据库里出现这种字样是否已插成功 <二进制数据>请问各位同仁,数据库里出现这种字样是否已插成功 复制bak文件到本机如何还原 大侠请进,帮忙优化一条SQL语句 大哥哥,求助视图问题~ 请教t-sql语句! sql server的select问题,急哦! 一个简单的问题,急!! 用SQL语句怎么提出查询结果的前两个字段! 关于MSSQL单表多个ntext字段的保存的问题。 设计数据库表时,尤其是实体时,是否应该定义代码? 请问数据库中外键的用法 求sql (同一个字段相同情况下,取另一个字段最大的所有记录) 请教CRM相关的数据库设计,先谢谢了
用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。ntext可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。text服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。image可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。 注释
下面的函数和语句可以与 ntext、text 或 image 数据一起使用。函数 语句
DATALENGTH READTEXT
PATINDEX SET TEXTSIZE
SUBSTRING UPDATETEXT
TEXTPTR WRITETEXT
TEXTVALID 请参见ALTER TABLECAST 和 CONVERTCREATE TABLE数据类型转换数据类型DECLARE @local_variableDELETEINSERTLIKESET @local_variableUPDATE使用 Unicode 数据
难道不能直接插入吗?
像insert into abc values(1,2,3) 这样吗
然后在应用层把要存如的图片转换为二进制流的形式,因为image实质上就是二进制流,
然后再调用insert 语句,把这个图片对应的二进制流存入到表中
很简单的
给你找了一段,你看看吧:
RemoteRule remoteRule = (RemoteRule)GetRemoteingObjectByType(typeof(RemoteRule), "remoterule");
DataSet ds = new DataSet();
string PageState = ViewState["PageState"].ToString();
//当页面状态为“new”时,表示要添加记录
if (PageState == "new")
{
string filename = txt_filename.Text;
string filecomment = txt_filecomment.Text;
string SlaveFileName = FileUpload1.PostedFile.FileName; //读取所上传的文件的二进制流 这里开始是度二进制流
HttpPostedFile file1 = FileUpload1.PostedFile;
int filelength = Convert.ToInt32(file1.InputStream.Length);
byte[] FileContent_img = new byte[filelength];
file1.InputStream.Read(FileContent_img, 0, filelength); 已经读出来了
DateTime UploadTime = DateTime.Now.Date;
ds = remoteRule.GetRulebyName(filename);
if (ds.Tables[0].Rows.Count > 0)
{
Response.Write("<script>alert('您已经存在该文件名所对应的记录,请先删除后再添加')</script>");
}
else
{
DataRow dr = ds.Tables[0].NewRow();
dr["FileName_ch"] = filename;
dr["FileDesc_ch"] = filecomment;
dr["SlaveFileName_ch"] = SlaveFileName;
dr["FileContent_img"] = FileContent_img;
dr["UploadUser_ch"] = this.SystemModuleSettings.UserManage.CurrUserInf["RealName"].ToString();
dr["UploadTime_dt"] = UploadTime;
ds.Tables[0].Rows.Add(dr);
bool b = remoteRule.UpdateRule(ds);
if (b)
{
Response.Write("<script>alert('添加成功,您可以点击添加按扭继续添加')</script>");
}
else
{
Response.Write("<script>alert('添加不成功')</script>");
}
}
这个这段代码的作用就是上传问件,不逼全看,只需要知道怎么转换就可以了
create table t(photo image)--建表
go
insert t
select
*
from
openrowset(bulk N'C:\1.jpg',single_blob) a --N'C:\1.jpg'为路径和图片名-------------------就这样就行了。。05的openrowset功能增强很多,在不少地方都有用到...
有关向SQL2005当中插入图片的问题,很感谢你的支持,
insert abc
select
*
from
openrowset(bulk N'd:\222\bird1.jpg',single_blob) a但如果是一个表,它有几个字段,其中一个字段是想插入图片的,那怎么办呀?
我是一个初学者,我想可能用@一类的东东吧,但不知如何使用,再请教一下高手了.
无上感激,谢谢!!
select
* --这只有一列
from
openrowset(bulk N'd:\222\bird1.jpg',single_blob) a
不要在已经结贴上发信息,
偶一般不去看--------
以下示例创建一个用于演示的小型表,并将名为 Text1.txt 的文件(位于 C: 根目录)中的文件数据插入 varbinary(max) 列中。USE AdventureWorks
GO
CREATE TABLE myTable(FileName nvarchar(60),
FileType nvarchar(60), Document varbinary(max))
GOINSERT INTO myTable(FileName, FileType, Document)
SELECT 'Text1.txt' AS FileName,
'.txt' AS FileType,
* FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO更为详细的信息可到http://msdn.microsoft.com/zh-cn/library/ms190312.aspx此处查看