这是我从数据库中获取数据的代码隐藏:
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();
}
答案 0 :(得分:0)
ExecuteScalar()
将始终返回第一行的第一列 - 单个值。您可能想要重新考虑您的方法,同时最简单的方法是使您的查询返回组合值:
string sql = "select testimonial + ' and ' + submitname from ....
答案 1 :(得分:0)
顺便说一句,您可能应该重写该函数以不使用内联SQL,因为您可能会以这种方式编写您的站点,从而容易受到SQL注入攻击。 (可能,在实际函数中,userid未设置为常量XXXXX,而是以某种方式传递)。