using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Text.RegularExpressions;
using System.Web.UI;
using System.Web.UI.WebControls;
using Access = Microsoft.Office.Interop.Access;
// 添加引用->.NET-> dao,Microsoft.Office.Interop.Access
public partial class PageImageAccess : System.Web.UI.Page
{
#region OnInit
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
string dbPath = Server.MapPath("~/App_Data/Image.mdb");
if (!File.Exists(dbPath))
{
Access.Application newAccess = new Access.Application();
newAccess.NewCurrentDatabase(dbPath);
dao.Database db = newAccess.CurrentDb();
db.Execute("create table [Images] (Image_Name Text primary key, Image_Type Text, Image_Data Image)", Type.Missing);
db.NewPassword("", "jinzhexian");
db.Close();
newAccess.Quit(Access.AcQuitOption.acQuitSaveNone);
newAccess = null;
GC.Collect();
Response.End();
}
}
#endregion
#region Page_Load
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
sqlDSImage.SelectCommand = "Select Image_Name from [Images]";
sqlDSImage.SelectCommandType = SqlDataSourceCommandType.Text;
sqlDSImage.FilterExpression = null;
sqlDSImage.DataSourceMode = SqlDataSourceMode.DataReader;
dropDownListName.AppendDataBoundItems = false; // 在绑定数据之前清除列表项。
dropDownListName.DataSourceID = "sqlDSImage";
dropDownListName.DataTextField = "Image_Name";
dropDownListName.DataBind();
}
bool flag = (dropDownListName.Items.Count > 0);
btnDelete.Enabled = flag;
btnSelect.Enabled = flag;
}
#endregion
#region FileUpload
protected void btnUpLoad_Click(object sender, EventArgs e)
{
string name = fileUpload.FileName;
if (!Regex.IsMatch(Path.GetExtension(name), @".(bmp|gif|jpg|png)", RegexOptions.IgnoreCase))
return;
if (dropDownListName.Items.FindByText(name) != null)
{
Response.Write(string.Format("图片名称“{0}”已存在!", name));
return;
}
sqlDSImage.InsertCommand = "insert into [Images] values(?,?,?)";
sqlDSImage.InsertCommandType = SqlDataSourceCommandType.Text;
try
{
sqlDSImage.Insert();
btnDelete.Enabled = true;
btnSelect.Enabled = true;
}
catch
{
return;
}
}
protected void sqlDSImage_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
OleDbCommand cmd = e.Command as OleDbCommand;
string name = fileUpload.FileName;
cmd.Parameters.Add("@Image_Name", OleDbType.VarWChar, name.Length, "Image_Name").Value = name;
string type = fileUpload.PostedFile.ContentType;
cmd.Parameters.Add("@Image_Type", OleDbType.VarWChar, type.Length, "Image_Type").Value = type;
byte[] bytes = fileUpload.FileBytes;
cmd.Parameters.Add("@Image_Data", OleDbType.LongVarBinary, bytes.Length, "Image_Data").Value = bytes;
dropDownListName.Items.Add(name);
dropDownListName.SelectedValue = name;
}
#endregion
#region DeleteImage
protected void btnDelete_Click(object sender, EventArgs e)
{
sqlDSImage.DeleteCommand = "delete from [Images] where Image_Name=?";
sqlDSImage.DeleteCommandType = SqlDataSourceCommandType.Text;
sqlDSImage.DeleteParameters.Add("Image_Name", TypeCode.String, dropDownListName.SelectedValue);
try
{
sqlDSImage.Delete();
dropDownListName.Items.RemoveAt(dropDownListName.SelectedIndex);
if (dropDownListName.SelectedIndex < 0)
{
btnDelete.Enabled = false;
btnSelect.Enabled = false;
}
}
catch
{
return;
}
}
#endregion
#region SelectImage
protected void btnSelect_Click(object sender, EventArgs e)
{
sqlDSImage.SelectCommand = "Select * from [Images]";
sqlDSImage.SelectCommandType = SqlDataSourceCommandType.Text;
sqlDSImage.FilterExpression = "Image_Name='{0}'";
sqlDSImage.FilterParameters.Add("Image_Name", TypeCode.String, dropDownListName.SelectedValue);
sqlDSImage.DataSourceMode = SqlDataSourceMode.DataSet;
DataView dataView = sqlDSImage.Select(DataSourceSelectArguments.Empty) as DataView;
DataRow dataRow = dataView[0].Row;
Response.ContentType = dataRow.Field<string>("Image_Type");
Response.BinaryWrite(dataRow.Field<byte[]>("Image_Data"));
}
#endregion
}