MVC连接到数据库并返回数据

时间:2017-09-12 08:46:50

标签: c# sql asp.net-mvc

我想在使用MVC将数据库中的某些数据渲染到页面视图之后。

我的控制器方法如下:

public ActionResult Index()
{

    string constr = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
    string query = "SELECT top 10 Keys FROM dbo.TestTable";
    using (SqlConnection con = new SqlConnection(constr))
    {

        SqlCommand cmd = new SqlCommand(query, con);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        try
        {
            while(reader.Read())
            {
                Console.WriteLine(String.Format("{0}", reader));
            }
        }
        finally
        {
            reader.Close();
        }
    }


    return View();
}

相应的模型非常简单:

public string Keys{ get; set; }

我已经调试了这个,它正确连接到我的数据库。我在我的数据库中运行SQL查询并返回结果。但是,当我运行下面的代码时,我得到一个-1结果值。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要打印出结果形式:

Console.WriteLine(String.Format("{0}", reader[0]));

reader[0]这里表示从获取的表中获取结果集的第一列的值。

或者您也可以指定列名称,如:

Console.WriteLine(String.Format("{0}", reader["Keys"]));

答案 1 :(得分:0)

public ActionResult Index()
{
    List<string> result = new List<string>();
    string constr = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
    string query = "SELECT top 10 Keys FROM dbo.TestTable";
    using (SqlConnection con = new SqlConnection(constr))
    {

        SqlCommand cmd = new SqlCommand(query, con);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        try
        {
            while(reader.Read())
            {
                  result.Add(reader[0].ToString());
            }
        }
        finally
        {
            reader.Close();
        }
}


    return View(result);
}

然后在你看来:

@model IEnumerable<string>

<ul>
@foreach (var item in model)
    <li>@item</li>
}
</ul>