来自 SQL 数据库的 MVC 多个结果无法正常工作

MVC multiple results from SQL database not working correctly

早上好,

我周末一直在学习 MVC .NET,我试图从数据库中获取数据,但结果没有显示:

我正在使用以下代码:

public class ListClientsController : Controller
{
    private string QueryString;
    private string myConnectionString;
    public List<ListClients> models = new List<ListClients>();

    public ActionResult Index()
    {
        bool iterate = true;
        string iname = "";
        string isurname = "";
        int iIDNO = 0;

        QueryString = "select FirstName, Surname, IDNumber from [iDtB].[dbo].[Clients]";
        myConnectionString = "Data Source=<name>\SQLEXPRESS01;Integrated Security=SSPI";
        SqlConnection iDtBData = new SqlConnection(myConnectionString);
        iDtBData.Open();
        SqlCommand SQLCMD = new SqlCommand(QueryString, iDtBData);
        SqlDataReader Reader = SQLCMD.ExecuteReader();

        Reader.Read();
        while (iterate)
        {
            try
            {
                iname = Reader["FirstName"].ToString();
                isurname = Reader["Surname"].ToString();
                int.TryParse(Reader["IDNumber"].ToString(), out iIDNO);

                models.Add(new ListClients
                {
                    Name = iname,
                    Surname = isurname,
                    IDNO = iIDNO
                });

                Reader.NextResult();
            }
            catch
            {
                iterate = false;
            }
        }
        Reader.Close();
        iDtBData.Close();

        return View(models);
    }
}

出于某种原因,我得到了这个结果:

MVC Client results

现在值得注意的是,我知道由于字段不匹配,我得到的 ID 号为“0”,我不明白为什么我无法显示多个结果。

提前致谢!

您实际上并没有阅读查询返回的所有结果。 NextResult() returns 下一个结果集,而不是下一个记录。用 Read() 替换它,您应该开始获取所有结果。

我还会消除 Try/Catch 循环,因为这会阻止您看到确实发生的任何错误。另外,Read returns a true/false 可以让您知道它是否读取了记录,从而使删除变得容易。

        while (Reader.Read())
        {
            try
            {
                iname = Reader["FirstName"].ToString();
                isurname = Reader["Surname"].ToString();
                int.TryParse(Reader["IDNumber"].ToString(), out iIDNO);

                models.Add(new ListClients
                {
                    Name = iname,
                    Surname = isurname,
                    IDNO = iIDNO
                });
        }

我还建议您了解如何使用 using 语句 (https://msdn.microsoft.com/en-us/library/yh598w02.aspx) 来改进连接和数据的处理 reader。