C# 使用OLEDB连接时出现兼容错误
我在这里对连接字符串使用了C# 使用OLEDB连接时出现兼容错误,c#,asp.net,C#,Asp.net,我在这里对连接字符串使用了OleDbConnection,但在第行中出现了错误 if (conn.State == ConnectionState.Closed) 错误为CS0019:运算符“==”不能应用于“System.Data.ConnectionState”和“ConnectionState”类型的操作数 这是我的密码 protected void btnSave_Click(object sender, EventArgs e) { DataTable dtExcel = n
OleDbConnection
,但在第行中出现了错误
if (conn.State == ConnectionState.Closed)
错误为CS0019:运算符“==”不能应用于“System.Data.ConnectionState”和“ConnectionState”类型的操作数
这是我的密码
protected void btnSave_Click(object sender, EventArgs e)
{
DataTable dtExcel = new DataTable();
dtExcel.Clear();
string StrCount = String.Empty;
string connString = "";
HttpPostedFile File = FileUpload1.PostedFile;
string strFileType = Path.GetExtension(FileUpload1.FileName).ToLower();
string path = FileUpload1.PostedFile.FileName;
string Filename = path.Substring(path.LastIndexOf("\\") + 1, path.Length - path.LastIndexOf("\\") - 1);
path = Server.MapPath(@"~/Excels/" + "/" + Filename.ToString());
File.SaveAs(path);
if (strFileType.Trim() == ".xls")
{
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (strFileType.Trim() == ".xlsx")
{
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}
string query = "SELECT * FROM [Sheet 1$]";
OleDbConnection conn = new OleDbConnection(connString);
conn.Close();
if (conn.State == ConnectionState.Closed)
conn.Open();
OleDbCommand cmd = new OleDbCommand(query, conn);
OleDbDataAdapter daExcel = new OleDbDataAdapter(cmd);
daExcel.Fill(dtExcel);
conn.Close();}
我不知道为什么
我尝试了其他链接中的解决方案,但没有帮助在我看来,您的类或属性名称不明确<代码>连接状态似乎有两种含义 尝试在其完整名称空间中按如下方式前缀
ConnectionState
:
if (conn.State == System.Data.ConnectionState.Closed)
在我看来,您的类或属性名称不明确<代码>连接状态似乎有两种含义 尝试在其完整名称空间中按如下方式前缀
ConnectionState
:
if (conn.State == System.Data.ConnectionState.Closed)
在阅读了你对Patrick答案的评论后,我发现这里缺少了其他内容
if (strFileType.Trim() == ".xls")
{
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (strFileType.Trim() == ".xlsx")
{
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}
可能是
connString
留空,因为strFileType
不是.xls.or.xlsx。阅读您对Patrick答案的评论后,我发现此处缺少其他内容
if (strFileType.Trim() == ".xls")
{
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (strFileType.Trim() == ".xlsx")
{
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}
可能是
connString
留空,因为strFileType
不是.xls.or.xlsx。您自己定义了ConnectionState.Closed
吗?@ChrisF:Nope,我没有使用它,如果在ConnectionState
上点击F12会发生什么?因此您有一个本地连接变量,您刚刚调用了Close(不必要),然后检查连接是否打开。我想你可以少一点偏执,就像史蒂夫说的,这是完全没有必要的。只需conn.Open()并最终将其关闭。您自己定义了ConnectionState.Closed
吗?@ChrisF:不,我没有使用它。如果您在ConnectionState
上点击F12会发生什么?因此您有一个本地连接变量,并且刚刚对其调用了close(不必要),然后检查您的连接是否打开。我想你可以少一点偏执,就像史蒂夫说的,这是完全没有必要的。只需conn.Open()并在最后关闭它。我得到错误,因为ConnectionString属性尚未初始化。在conn.Open()处。
好的,所以实际的编译错误得到解决!我不认为你应该在打开之前关闭它,但那只是我的两分钱。实际上我需要看那个链接什么?你能编辑一下你的答案吗?对不起,那已经被删除了。在打开它之前不要关闭它。@coder这不是很难解决的问题。难道你没有看到,如果你有一个不同于XLS或XLSX的扩展名,你就不会初始化带有连接字符串的变量吗?我得到一个错误,因为ConnectionString属性还没有初始化。atconn.open()
好的,这样实际的编译错误就解决了!我不认为你应该在打开之前关闭它,但那只是我的两分钱。实际上我需要看那个链接什么?你能编辑一下你的答案吗?对不起,那已经被删除了。在打开它之前不要关闭它。@coder这不是很难解决的问题。难道你没有看到,如果你有一个不同于XLS或XLSX的扩展名,你就不会初始化带有连接字符串的变量吗?