在 OLEDB 连接字符串中,数据源是 DATASOURCE = {0} 什么意思?

In OLEDB Connection string ,data source is DATASOURCE = {0} What Does it Mean?

我有一个 aspx 页面,它允许您上传 excel 模板,该模板的内容被提取到数据表中,然后在 SQL 服务器数据库中更新。 使用了 OLEDB 数据提供程序。

Conn =new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'", filename))

在上面的连接字符串中,数据源被指定为Data Source ={0}这是什么意思?

这是上传按钮的隐藏代码。

     protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.FileName.ToString() == "")
        {
            lblMessage.Text = "Please select the File to Upload";
            lblMessage.ForeColor = System.Drawing.Color.Red;
            return;
        }

        string filename = Server.MapPath("Temp/" + FileUpload1.FileName.ToString());
        FileUpload1.SaveAs(filename);
        HttpPostedFile postedFile = this.FileUpload1.PostedFile;
        OleDbConnection Conn = null;
        OleDbDataAdapter DA;
        DataTable DT = new DataTable();
        DataTable tempDT = new DataTable();
        if (Path.GetExtension(postedFile.FileName) == ".xls")
        {
            Conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'", filename));
            OleDbCommand excelCmd = new OleDbCommand();
            string sheet_Name = "";
            excelCmd.Connection = Conn;
            excelCmd.Connection.Open();
            DT = excelCmd.Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

            sheet_Name = DT.Rows[0]["TABLE_NAME"].ToString();
            excelCmd.Connection.Close();                

            if (sheet_Name == "")
            {
                //Throw Excption if Sheet is not present in file
            }

            DA = new OleDbDataAdapter(string.Format("select * from [{0}]", sheet_Name), Conn);

            DA.Fill(DT);              

            string Qno = string.Empty;
            string Qdesc = string.Empty;
            string Header = string.Empty;
            int Dorder;
            string eAlert = string.Empty;



            foreach (DataRow dr in DT.Rows)
            {
                if (!DT.Columns.Contains("QuestionNo"))
                {
                    lblMessage.Text = "QuestionNo ColumnName Mismatching";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    grd_Questions.DataBind();
                    return;
                }
                else if (!DT.Columns.Contains("QuestionDesc"))
                {
                    lblMessage.Text = "QuestionDesc ColumnName Mismatching";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    grd_Questions.DataBind();
                    return;
                }
                else if (!DT.Columns.Contains("Type"))
                {
                    lblMessage.Text = "Type ColumnName Mismatching";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    grd_Questions.DataBind();
                    return;
                }
                else if (!DT.Columns.Contains("e-Alert"))
                {
                    lblMessage.Text = "e-Alert ColumnName Mismatching";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    grd_Questions.DataBind();
                    return;
                }
                else if (!DT.Columns.Contains("DisplayOrder"))
                {
                    lblMessage.Text = "DisplayOrder ColumnName Mismatching";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    grd_Questions.DataBind();
                    return;
                }
                else
                {
                    PQ.updateQuestion();
                }

            }

这意味着您的数据源将是您的 excel 文件。在执行期间,“{0}”部分将被替换为 'filename'(在逗号部分之后)。这样您的 excel 文件将充当数据库。

("Provider={0};Data Source={1};Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'", Microsoft.ACE.OLEDB.12.0, filename)

这也行。