0

データベースからデータを取得するためのコードビハインドは次のとおりです。

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();






}
4

2 に答える 2

0

余談ですが、インライン SQL を使用しないようにその関数を書き直す必要があります。このように記述すると、サイトが SQL インジェクション攻撃に対して脆弱になる可能性があるためです。(おそらく、userid は実際の関数で定数 XXXXX として設定されておらず、代わりに何らかの方法で渡されます)。

于 2013-05-06T22:23:51.037 に答える