其中 new byte[sm.Length+8]为:
+8是wmf文件
+1是office07文件
jpg文件不加.
上面的规律是通过二进制解读器比较发现的.至于原因还米搞清楚.
程序包括两个函数:保存函数和读取函数.
数据库是在本机上建立一个名为printtest的数据库,在数据库里建一个表imagetest:
id int类型 (是标识)
imagetest image类型
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using System.Drawing.Imaging;
namespace wmftest

{

/**//**//**//// <summary>
/// wmftest 的摘要说明。
/// </summary>
public class wmftest

{
public wmftest()

{
//
// TODO: 在此处添加构造函数逻辑
//
}
//private Point Corner_LeftTop;//定义左上角
private static string sqlconnstr=
"Data Source=(local) ;Initial Catalog=printtest;Integrated Security=SSPI";
public static void InsertIMG()

{

//将需要存储的图片读取为数据流
FileStream sm=new FileStream(@"E:\1.wmf", FileMode.Open,FileAccess.Read);
Byte[] byte2 = new byte[sm.Length+8];
sm.Read(byte2 , 0, Convert.ToInt32(sm.Length));
sm.Close();
using (SqlConnection conn = new SqlConnection(sqlconnstr))

{
try

{
//数据库写入#region//数据库写入
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into imagetest (imagetest) values (@par) ";
cmd.CommandType=CommandType.Text;
cmd.Parameters.Add("@par",SqlDbType.Image);
cmd.Parameters["@par"].Value=byte2;
cmd.ExecuteNonQuery();
#endregion
}

catch(Exception ex)
{ MessageBox.Show(ex.Message);}
conn.Close();
}
}
public static void Read(int id)

{
byte[] MyData = new byte[0];
using (SqlConnection conn = new SqlConnection(sqlconnstr))

{
FileStream fs = new FileStream( @"c:\00.wmf", FileMode.Create, FileAccess.Write);
try

{
//数据库读取#region//数据库读取
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select imagetest from imagetest where id=@id";
cmd.CommandType=CommandType.Text;
cmd.Parameters.Add("@id",SqlDbType.Int);//增加参数id,表示读取的是哪条记录
cmd.Parameters["@id"].Value=id;
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
#endregion
//数据流还原文件
MyData = (byte[])sdr["imagetest"];//读取第一个图片的位流
conn.Close();
//获得数据库中存储的位流数组的维度上限,用作读取流的上限
int ArraySize= MyData.GetUpperBound(0);
fs.Write( MyData, 0, ArraySize);
}

catch(Exception ex)
{MessageBox.Show(ex.Message);}
fs.Close();//关闭
}
}
}
}
