详解C#中SqlParameter的作用与用法

  public int SavePhoto(string photourl)

  {

  FileStream

  fs = new FileStream(photourl,

  FileMode.Open, FileAccess.Read);//创建FileStream对象,用于向BinaryReader写入字节数据流

  BinaryReader

  br = new BinaryReader(fs);//创建BinaryReader对象,用于写入下面的byte数组

  byte[]

  photo = br.ReadBytes((int)fs.Length);//新建byte数组,写入br中的数据

  br.Close();//记得要关闭br

  fs.Close();//还有fs

  string sql

  = "update

  Table1 set photo = @photo where ID = '0'";

  SqlConnection

  conn = new SqlConnection();

  conn.ConnectionString

  = "Data

  Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\Database.mdf;User Instance=true";

  SqlCommand

  cmd = new SqlCommand(sql,

  conn);

  SqlParameter

  sp = new SqlParameter("@photo",

  photo);

  cmd.Parameters.Add(sp);

  try

  {

  conn.Open();

  return (cmd.ExecuteNonQuery());

  }

  catch (Exception)

  {

  return -1;

  throw;

  }

  finally

  {

  conn.Close();

  }

  }

  public void ReadPhoto(string url)

  {

  string sql

  = "select

  photo from Table1 where ID = '0'";

  SqlConnection

  conn = new SqlConnection();

  conn.ConnectionString

  = "Data

  Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\Database.mdf;User Instance=true";

  SqlCommand

  cmd = new SqlCommand(sql,

  conn);

  try

  {

  conn.Open();

  SqlDataReader

  reader = cmd.ExecuteReader();//采用SqlDataReader的方法来读取数据

  if (reader.Read())

  {

  byte[]

  photo = reader[0] as byte[];//将第0列的数据写入byte数组

  FileStream

  fs = new FileStream(url,FileMode.CreateNew);创建FileStream对象,用于写入字节数据流

  fs.Write(photo,0,photo.Length);//将byte数组中的数据写入fs

  fs.Close();//关闭fs

  }

  reader.Close();//关闭reader

  }

  catch (Exception

  ex)

  {

  throw;

  }

  finally

  {

  conn.Close();

  } }}