1

ASP.NET を初めて使用するので、SQL データベースからランダムな行を選択し、別のページの html テーブルにフィールドを表示する方法を知りたいです。ユーザーがボタンを押すと、データベースからランダムな映画が取得され、新しいページの html テーブルに映画の詳細が表示されます。どうすればいいのかわからず、ラベルを使用してデータを表示しようとしています。これまでのコードのサンプルは次のとおりです。

    private SqlConnection conn;
    protected void Page_Load(object sender, EventArgs e)
    {
            ConnectionStringSettings connString = ConfigurationManager.ConnectionStrings ["MovieAppConnectionString1"];
            conn = new SqlConnection(connString.ConnectionString);
    }

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            conn.Open();
            string queryString = "SELECT TOP 1 * FROM Movie ORDER BY NEWID()";
            SqlCommand cmd = new SqlCommand(queryString, conn);
            {
                SqlDataReader reader = cmd.ExecuteReader();
                StringBuilder MyStringBuilder = new StringBuilder();
                while (reader.Read())
                {
                    Image2.Text = reader[2].ToString();
                    Label1.Text = reader[1].ToString();
                    Desc.Text = reader[3].ToString();
                    Direc.Text = reader[5].ToString();
                    Strs.Text = reader[7].ToString();
                    Rtime.Text = reader[4].ToString();
                    ImdbRt.Text = reader[8].ToString();
                }
            }
       }
        finally
        {
            conn.Close();
        }
        Server.Transfer("MovieSelected.aspx");
4

2 に答える 2

1

SQL Server クエリを次のように変更します。

SELECT TOP 1 * FROM Movie ORDER BY NEWID()

SELECT TOP 1 * FROM Movie ORDER BY RAND()
于 2013-01-30T23:08:29.800 に答える
0

aspx.cs ファイルで:

int iLength = 0; 
int index = 0;

DataTable dt = new DataTable();
dt = SqlComm.SqlDataTable("SELECT * FROM Movie");

object obj = new object();
obj = SqlComm.SqlReturn("SELECT COUNT (yourTargetColumn) FROM yourTable");

if (obj != null)                    
     iLength = Convert.ToInt32(obj); 

string[] stringArray = new string[iLength];
for (index = 0; index < iLength; index++) 
{
     stringArray[index] = (string)dt.Rows[index]["yourTargetColumn"];                   
}
foreach (string strArray in stringArray)
{    
     Label yourLabel = new Label();
     PH.Controls.Add(yourLabel);
}

.aspx ファイル内:

<asp:PlaceHolder ID="PH" runat="server"></asp:PlaceHolder>          

"SqlComm.cs" という名前の App_Code フォルダーにクラスを追加します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;

public class SqlComm
{
   static string DatabaseConnectionString = "your connection string";

   public static object SqlReturn(string sql)
    {
        using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);                  
            object result = (object)cmd.ExecuteScalar();
            return result;           

        }
    }

   public static DataTable SqlDataTable(string sql)
   {
       using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
       {
           SqlCommand cmd = new SqlCommand(sql, conn);
           cmd.Connection.Open();
           DataTable TempTable = new DataTable();
           TempTable.Load(cmd.ExecuteReader());
           return TempTable;
       }
}

using System.Data.SqlClient注:をコードに追加することを忘れないでください。SELECTまた、必要なデータを取得するには、コマンドをカスタマイズするだけです。

于 2013-02-01T16:07:44.843 に答える