C# 使用c将文档上载到Access DB#

C# 使用c将文档上载到Access DB#,c#,file-upload,ms-access-2010,C#,File Upload,Ms Access 2010,我在VisualStudio2010工作,我试图通过网页将文档上传到access数据库。我在运行代码时没有收到任何错误,但没有向数据库写入任何内容。这是我的点击代码,显示我认为它应该做什么 protected void btnUpload_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { string fileExtension = Path.GetExte

我在VisualStudio2010工作,我试图通过网页将文档上传到access数据库。我在运行代码时没有收到任何错误,但没有向数据库写入任何内容。这是我的点击代码,显示我认为它应该做什么

protected void btnUpload_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            string fileExtension = Path.GetExtension(FileUpload1.FileName);

            if (fileExtension.ToLower() != ".doc" || fileExtension.ToLower() != ".docx" || fileExtension.ToLower() != ".pdf")
            {
                lblInfo.Text = "Only .doc, .docx, or .pdf files are allowed.";
                lblInfo.ForeColor = System.Drawing.Color.Red;
            }
            else
            {
                int fileSize = FileUpload1.PostedFile.ContentLength;
                if (fileSize > 2097152)
                {
                    lblInfo.Text = "Maximum file size of 2 MB exceeded.";
                    lblInfo.ForeColor = System.Drawing.Color.Red;
                }
                else
                {
                    OleDbCommand update = new OleDbCommand("Update STAFF SET Resume = @Resume WHERE StaffID=@StaffID", DBConnection);
                    update.Parameters.Add("@Resume", OleDbType.LongVarBinary).Value = FileUpload1.FileContent;
                    update.Parameters.Add("@StaffID", OleDbType.Integer).Value = txtStaffID.Text;
                    lblInfo.Text = "File Uploaded";
                    lblInfo.ForeColor = System.Drawing.Color.Green;
                }
            }
        }
        else
        {
            lblInfo.Text = "Please select a file to upload";
            lblInfo.ForeColor = System.Drawing.Color.Red;
        }

    }
如果你能提供任何意见或建议,那就太好了。谢谢我还将展示整个代码,以防DB连接出现问题

public partial class Staff : System.Web.UI.Page
{
    OleDbConnection DBConnection = new OleDbConnection();
    OleDbDataAdapter DataAdapter;
    DataTable LocalDataTable = new DataTable();

    private void ConnectToDatabase()
    {
        DBConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CIS470_TPS_System\CIS470_TPS_System\CIS470_TPS_System\App_Data\TpsSystem_DB.mdb";
        DBConnection.Open();
        DataAdapter = new OleDbDataAdapter("Select * From STAFF", DBConnection);
        DataAdapter.Fill(LocalDataTable);
    }

    private void Page_Load(object sender, EventArgs e)
    {
        ConnectToDatabase();
    }

    protected void AccessDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {

    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string requestId = GridView1.SelectedRow.Cells[1].Text;
        txtSelectedStaff.Text = requestId; //this control holds the selected value
    }

    protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e)
    {

    }

正如问题注释中所建议的,我们可以使用FileUpload控件的
.FileBytes
属性来提供查询参数的值,如下(简化)示例所示:

protectedvoidbtnupload\u单击(对象发送方,事件参数e)
{
使用(var con=new OleDbConnection())
{
con.连接字符串=
@“Provider=Microsoft.ACE.OLEDB.12.0;”+
@“数据源=C:\\ uu tmp\staffDb.accdb;”;
con.Open();
使用(var cmd=new OleDbCommand())
{
cmd.Connection=con;
cmd.CommandText=
“更新员工集简历=?”+
“其中StaffID=?”;
cmd.Parameters.AddWithValue(“?”,FileUpload1.FileBytes);
cmd.Parameters.AddWithValue(“?”,1);
cmd.ExecuteNonQuery();
}
con.Close();
}
}

这不起作用,因为您刚刚使用了OleDbCommand,但没有执行它。尝试在“lblInfo.Text=“File Uploaded”;“行”之前使用update.ExecuteNonQuery()执行,然后进行检查。;)@HiteshMistry感谢您的建议,但在这样做之后,我在按upload时出错。它说InvalidCastException是由用户代码处理的。无法将参数值从HttpInputStream转换为字节[]。嘿,Douglas,只需编写FileUpload1.FileBytes而不是FileUpload1.FileContent,尝试告诉我是否解决了问题。我无法执行此操作,因为我的计算机上没有安装访问权限:|@谢谢你。成功了。现在想知道如何打开它并阅读它,哈哈。