试图将数据从Microsoft Access 2010拉入C#程序

试图将数据从Microsoft Access 2010拉入C#程序,c#,sql,ms-access,C#,Sql,Ms Access,我正在尝试构建一个程序,该程序从access数据库中提取数据。以下是我构建的SQL语句(已在Access和works中测试): 我面临的问题是上面的总结陈述。当我运行代码时,我发现出现了一个意想不到的问题:“HoursWorked” 下面是我构建的代码。我确信这是一个愚蠢的错误。谢谢你的帮助 Private void more15(string sql) { //string inputLine; clsQuery loanee; mLo

我正在尝试构建一个程序,该程序从access数据库中提取数据。以下是我构建的SQL语句(已在Access和works中测试):

我面临的问题是上面的总结陈述。当我运行代码时,我发现出现了一个意想不到的问题:“HoursWorked”

下面是我构建的代码。我确信这是一个愚蠢的错误。谢谢你的帮助

Private void more15(string sql)
    {
        //string inputLine;
        clsQuery loanee;

        mLoanee.Clear();

        // Read the data from the specified file.

        if (File.Exists(mClientFile) == false)
        {
            ShowMessage(mClientFile + " does not exist. Please open another file.");
            return;
        }
        try
        {
            openDatabaseConnection();
            mDB.Open();
            OleDbCommand cmd;
            OleDbDataReader rdr;
            cmd = new OleDbCommand(sql, mDB);
            rdr = cmd.ExecuteReader();

            while (rdr.Read() == true)
            {
                loanee = new clsQuery(
                          (int)rdr["LoaneeID"],
                          (string)rdr["FirstName"],
                          (string)rdr["LastName"],
                          (int)rdr["HoursWorked"]);

                mLoanee.Add(loanee);
            }
            rdr.Close();
        }
        catch (Exception ex)
        {
            ShowMessage("There was an unexpected problem: " + ex.Message);
        }
        finally
        {
            closeDatabaseConnection();
        }
    }

你没有给sum(HoursWorked)指定别名

更改您的查询,如下所示:

SELECT Volunteer.LoaneeID, FirstName, LastName, SUM(HoursWorked ) as HoursWorked 
FROM VOLUNTEER 
INNER JOIN PERSON 
ON Volunteer.LoaneeID = Person.ID 
Group by FirstName, LastName, LoaneeID;

完全忘了!非常感谢。我现在在C#端遇到问题,可能是您应该检查数据库中列的数据类型是否与您强制转换它们的目的相对应。不是在访问端,而是在我的C#代码中。将我的cls更改为Int32并更改(int)rdr[“工作小时数”];将.ToInt32(rdr([“hourswork”])转换为rdr;
SELECT Volunteer.LoaneeID, FirstName, LastName, SUM(HoursWorked ) as HoursWorked 
FROM VOLUNTEER 
INNER JOIN PERSON 
ON Volunteer.LoaneeID = Person.ID 
Group by FirstName, LastName, LoaneeID;