详解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();
} }}