需要帮助从asp代码中的sql server数据库读取多个值

时间:2013-05-06 21:25:11

标签: asp.net sql sql-server database

这是我从数据库中获取数据的代码隐藏:

public static string getTestimonial()
{

    string username = "xxxxx";
    SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["xxxxxxx"].ConnectionString);
    Conn.Open();
    string sql = "select testimonial,submitname from (SELECT TOP 1 * FROM dbo.testimonials where username='" + username + "' ORDER BY newid()) as answer;";
    SqlCommand cmd = new SqlCommand(sql, Conn);
    string test=cmd.ExecuteScalar().ToString();
    Conn.Close();

    return test;
}

然而,当我尝试在我的aspx页面上显示数据时,我得到的只是第一个值:

<div class="span3">

                    <%= getTestimonial() %>

                </div>

您可以帮我找一个将查询中的推荐和提交名称变为变量的方法吗?

谢谢!

谢谢!解决了!使用:

public static string getTestimonial()
{

    string username = "xxxxxx";
    SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["xxxxxxx"].ConnectionString);
    Conn.Open();
    string sql = "select testimonial,submitname from (SELECT TOP 1 * FROM dbo.testimonials where username='" + username + "' ORDER BY newid()) as answer;";
    SqlCommand cmd = new SqlCommand(sql, Conn);
    var test = new StringBuilder();

    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            test.Append(reader.GetString(0));
            test.Append(" and ");
            test.Append(reader.GetString(1));
        }
    }

    Conn.Close();
    return test.ToString();






}

2 个答案:

答案 0 :(得分:0)

ExecuteScalar()将始终返回第一行的第一列 - 单个值。您可能想要重新考虑您的方法,同时最简单的方法是使您的查询返回组合值:

string sql = "select testimonial + ' and ' + submitname from ....

答案 1 :(得分:0)

顺便说一句,您可能应该重写该函数以不使用内联SQL,因为您可能会以这种方式编写您的站点,从而容易受到SQL注入攻击。 (可能,在实际函数中,userid未设置为常量XXXXX,而是以某种方式传递)。