| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2332 人关注过本帖
标题:关于SQL存储图片问题
只看楼主 加入收藏
litong001
Rank: 1
来 自:沈阳理工
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-6-12
收藏
 问题点数:0 回复次数:2 
关于SQL存储图片问题
我用 和SQL2000做一个网页 网页上有用户注册 其中有一项是上传个人形象  怎么把这样的图片存储到SQL2000中啊?



在网上找到以下代码 但是 在查询分析器里说一直在行批查询 谁能帮帮我啊


在SQL Server 2000中使用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)         --   必须的,且不是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  

通过对上述代码分析可以知道在SQL查询分析器中使用如下脚本“insert into p(pic)values('C:"Documents and Settings"All Users"Documents"My Pictures"示例图片"Water lilies.jpg')”是可以把图片保存在数据库中的。

2、SqlParameter用于表示 SqlCommand 的参数中的参数,通过文件路径传递的是文件的内容,当然,SqlParameter类的Value属性也可以传递文件内容

关键代码解析
1、存储图片

//第一步:建立并打开文件流

              FileStream fs = File.Open(this.openFileDialog1.FileName,FileMode.Open

                  ,FileAccess.Read,FileShare.None);

              //第二步:声明byte型数组

              byte [] b = new byte[fs.Length];

              //第三步:读取文件内容

              fs.Read(b,0,(int)b.Length);

              fs.Close();

              /*

               * 存储一张图片到SQL 2000数据库

               * 操作方式与存储一般数据相类似

               * */

              //第四步:建立、打开数据库连接

              SqlConnection con = new SqlConnection("server =.;database = bdqn;uid = sa;pwd = sa;");

              con.Open();

              //第五步:实例化Command对象

              SqlCommand com = con.CreateCommand();

               into p (pic)values(@pic/*@pic 是存储过程参数*/)";

              //为SqlCommand对象的SqlParameter 对象添加@pic属性

              SqlParameter sp =new SqlParameter("@pic",SqlDbType.Image);

              sp.Direction = ParameterDirection.Input;

              sp.Value = b;

              com.Parameters.Add(sp);

              //执行操作

              com.ExecuteNonQuery();

              con.Close();

2、读取图片

private void button2_Click(object sender, System.EventArgs e)

       {

           SqlConnection con = new SqlConnection("server =.;database = bdqn;uid = sa;pwd = sa;");

           con.Open();

           SqlCommand com = con.CreateCommand();

            pic from p where id = 1";

           //强制转换为byte【】数组

           byte []b = (byte[])com.ExecuteScalar();

           con.Close();

           //通过MemoryStream流实例化Image对象

           MemoryStream ms = new MemoryStream(b,0,(int)b.Length);

           this.pictureBox1.Image = Image.FromStream(ms);

       }
搜索更多相关主题的帖子: SQL varchar 网页 ASP PROCEDURE 
2008-07-02 18:22
高世锋
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-7-4
收藏
得分:0 
2008-07-05 11:37
zszts520
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2008-7-11
收藏
得分:0 
用的着这样吗?
2008-07-13 11:42
快速回复:关于SQL存储图片问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027019 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved