通过流方式读取sql2000的image类型,并写在指定的本地目录,代码如下:
            byte[] content;
            SqlConnection conn = new SqlConnection("server=.;database=zslib;uid=sa;pwd=");
            SqlDataAdapter da = new SqlDataAdapter("select * from t_cd where cd_image is not null", conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable imagedt = ds.Tables[0];            int num = 1;
            for (int i = 0; i < imagedt.Rows.Count; i++)
            {
                string cd_id = imagedt.Rows[i]["cd_id"].ToString();
                content = (byte[])imagedt.Rows[i]["cd_image"];
                int ArraySize = content.GetUpperBound(0);
                FileStream stream = new FileStream("D:\\cd\\" + cd_id + ".jpg", FileMode.OpenOrCreate, FileAccess.Write);
                stream.Write(content, 0, ArraySize);
                stream.Close();
                num++;
            }
            Console.WriteLine("已导出"+num+"张图片!");PS:亲爱的朋友们,别忘了导入相应的命名空间.
我只是个新手,对c#并不是非常的了解,或许以上的代码还可以优化,欢迎大家提出宝贵的建议.

解决方案 »

  1.   

    很好 Console.WriteLine("已导出"+num+"张图片!");  项目经理也骂
      

  2.   

    不要用select *
    不要用绝对路径
      

  3.   

    很不错很不错的:) 如果你Select语句写好了 那直接使用DataTable效果是否好点? DataSet ds = new DataSet(); 
                da.Fill(ds); 
                DataTable imagedt = ds.Tables[0]; DataTable imagedt =new DataTable();
    da.Fill(imagedt);
      

  4.   

    文件操作流操作,最好有Try....catch.....Finally
    i 和 num 定义重复了啊? 
      

  5.   

    找个二进制字段没有必要select *
      

  6.   

    SQL语句注意尽量不要用select * ...,还有路径,还有操作数据库用try-catch块