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属性还没有初始化。at
conn.open()
好的,这样实际的编译错误就解决了!我不认为你应该在打开之前关闭它,但那只是我的两分钱。实际上我需要看那个链接什么?你能编辑一下你的答案吗?对不起,那已经被删除了。在打开它之前不要关闭它。@coder这不是很难解决的问题。难道你没有看到,如果你有一个不同于XLS或XLSX的扩展名,你就不会初始化带有连接字符串的变量吗?