在.NET平台下使用SQL2000 Image类型数据

SQL Server 2000中的ntext、text 和 image数据类型用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度和可变长度数据类型。其中image可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。对于上述三种数据的存取一直是使用SQL Server2000 的一个难点。本实验实现在.NET平台下对SQL Server 2000 Image类型数据的存取操作。

关键代码解析

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();

              com.CommandText="insert 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();

           com.CommandText="select 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);

       }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值