我是利用上传把图片存到数据库中的,可是我不知道怎样从数据库中读出来。请指教
我把图片存到数据库的代码是这样的。
ArrayList arr;
int ImageSize=0;
byte[] ImageBuffer;
string FileName;
FileInfo TpFile;
FileStream fs=null;
FileName=Server.MapPath("\\BookShop\\UpFile").ToString().Trim()+"\\"+ViewState["PostFileName"];
TpFile=new FileInfo(FileName);
ImageSize=(int)TpFile.Length;
fs=new FileStream(FileName,FileMode.OpenOrCreate);
BinaryReader r=new BinaryReader(fs);
r.BaseStream.Seek(0,SeekOrigin.Begin);
ImageBuffer=r.ReadBytes(ImageSize);
arr=new ArrayList();
arr.Add(ImageBuffer);
myBook.AddBook(arr);
其中AddBook是个函数,他通过存储过程把图片存到数据库中,程序部分代码如下:
SqlConnection myCn=new SqlConnection(strConn);
SqlCommand myCm=new SqlCommand("AddBook",myCn);
myCm.CommandType =CommandType.StoredProcedure ;
myCm.Parameters.Add(new SqlParameter("@cover",SqlDbType.Image ));
myCm.Parameters["@cover"].Value =tempary[0];
myCn.Open() ;
myCm.ExecuteNonQuery() ;
我把图片存到数据库的代码是这样的。
ArrayList arr;
int ImageSize=0;
byte[] ImageBuffer;
string FileName;
FileInfo TpFile;
FileStream fs=null;
FileName=Server.MapPath("\\BookShop\\UpFile").ToString().Trim()+"\\"+ViewState["PostFileName"];
TpFile=new FileInfo(FileName);
ImageSize=(int)TpFile.Length;
fs=new FileStream(FileName,FileMode.OpenOrCreate);
BinaryReader r=new BinaryReader(fs);
r.BaseStream.Seek(0,SeekOrigin.Begin);
ImageBuffer=r.ReadBytes(ImageSize);
arr=new ArrayList();
arr.Add(ImageBuffer);
myBook.AddBook(arr);
其中AddBook是个函数,他通过存储过程把图片存到数据库中,程序部分代码如下:
SqlConnection myCn=new SqlConnection(strConn);
SqlCommand myCm=new SqlCommand("AddBook",myCn);
myCm.CommandType =CommandType.StoredProcedure ;
myCm.Parameters.Add(new SqlParameter("@cover",SqlDbType.Image ));
myCm.Parameters["@cover"].Value =tempary[0];
myCn.Open() ;
myCm.ExecuteNonQuery() ;
public class MainDisplay : System.Web.UI.Page {
public void Page_Load(System.Object sender, System.EventArgs e) {
int ImgID = System.Convert.ToInt32(Request.QueryString["ImgID"]);System.Data.OleDb.OleDbConnection Con = new System.Data.OleDb.OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;" +"Integrated Security=SSPI;Initial Catalog=northwind");System.String SqlCmd = "SELECT * FROM Images WHERE ImageID = ?";System.Data.OleDb.OleDbCommand OleDbCmdObj = new System.Data.OleDb.OleDbCommand(SqlCmd, Con);OleDbCmdObj.Parameters.Add("@ImageID", System.Data.OleDb.OleDbType.Integer).Value = ImgID;
Con.Open();
System.Data.OleDb.OleDbDataReader OleReader = OleDbCmdObj.ExecuteReader();OleReader.Read();
Response.ContentType = (string)OleReader["ContentType"];
Response.OutputStream.Write((byte[])OleReader["Image"], 0, (int)OleReader["ByteSize"]);
Response.End();
Con.Close();
}
}
}在以上的代码中,我们实现使用Request.QueryString["ImgID"]取得要求显示的图片的ImgID,这个ImgID就是图片在数据库中的唯一ID,该ID是上传图像数据的时候,数据库直接生成的。