请教大虾们,我要用winform的形式做2000个学生的准考证,能打印出来。普通字段好显示,可是就是照片字段不知道怎么做。
参考网上的程序:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
using System.IO;
using CrystalDecisions.Shared;
using System.Web;
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=bys2012;Integrated Security=True");
          SqlDataAdapter da = new SqlDataAdapter();
            con.Open();
            DataSet ds = new DataSet();
            DataTable dt = new DataTable("bys");
        ds.Tables.Add(dt);
         dt.Columns.Add(new DataColumn("xm",Type.GetType("System.String")));
        dt.Columns.Add(new DataColumn("xb",Type.GetType("System.String")));
                    dt.Columns.Add(new DataColumn("sfzh",Type.GetType("System.String")));
        dt.Columns.Add(new DataColumn("image",Type.GetType("System.Byte[]")));
        DataRow drow;        SqlCommand comm = new SqlCommand("select * from bys3406",con);
        SqlDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
        while(dr.Read())
        {
            drow = dt.NewRow();
            drow["xm"] = dr["xm"].ToString();
            drow["xb"] = dr["xb"].ToString();
             drow["sfzh"] = dr["sfzh"].ToString();
            drow["image"] = GetImage(dr["image"].ToString());
            dt.Rows.Add(drow);
        }
        dr.Close();        ReportDocument doc = new ReportDocument();
         doc.Load(Server.MapPath("~/App_Data/CrystalReport.rpt")); 
         doc.SetDataSource(ds);
         crystalReportViewer1 .ReportSource =doc;
        }
          private Byte[] GetImage(string FullPath)
    {
        byte[] byImage = null;
        FileStream fs = new FileStream(Server.MapPath("~/upfile/prod/") + FullPath, FileMode.Open);
        BinaryReader br = new BinaryReader(fs);
        byImage= br.ReadBytes(Convert.ToInt32(br.BaseStream.Length));
        fs.Close();
        br.Close();
        return byImage;
    }
提示"上下文不存在名称server"改了后还是会有错。
请问我的思路是不是就是错的,有什么好的办法可以用吗,我的学生图片是按照身份证号以路径存放的

解决方案 »

  1.   

    保存图片有2种方式,
    1,把图片保存到图片位置,数据库记录图片的路径
    2,直接把图片保存到数据库,,保存图片的字段类型是image
      

  2.   

    图片的操作你可以以二进制字节数组的形式放到数据库中(sqlserver中有image类型,oracle中有blob类型),然后从数据库中读出来,显示到picturebox当中。
    从数据库中读出来的显示的代码,参考:http://blog.csdn.net/chinacsharper/article/details/6538296