在 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)
这也行。
我有一个 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)
这也行。