0

IDE: Microsoft Visual Studio 2012、DBMS: Microsoft SQL Server 2012

ログイン ページとメイン ページの 2 つの ASP.NET Web ページがあります。私がしたいのは、ログインした後、ID をセッションに保存し、それを使用してデータベース (ID と同じテーブル) からユーザーの名を取得し、メイン ページのラベルに入れることです。私は過去にそれを行うことができました:

SqlDataReader

しかし今、私は以下を返す Data Access Layer クラスを持っています:

DataTable

私の問題があります。私はそれを行う方法を理解できないようです。これまでのところ、私はこれらの作品を持っています:

Session.Add("StudentID", dt);

以上がログインページでした。メインページは次のとおりです。

DataTable dt = (DataTable)Session["StudentUser"];
int ID = int.Parse(Session["StudentID"].ToString());
DAL.GetData("SELECT Fname FROM StudentUser WHERE StudentID = " + ID);
lblName.Text = dt["Fname"].ToString();

私のDALコードについては、次のとおりです。

public static DataTable GetData(string sql)
{
      SqlConnection con = new SqlConnection(DAL.ConnectionString);
      con.Open();
      SqlCommand com = new SqlCommand(sql, con);
      SqlDataAdapter da = new SqlDataAdapter(com);
      DataTable dt = new DataTable();
      da.Fill(dt);
      return dt;
}

テーブルが呼び出さStudentUserれ、ラベルに必要な部分はFname

(dr)を使用する場合SqlDataReader、ログインのコードは通常次のようになります。

Session.Add("StudentID", dr["StudentID"].ToString());

メインページの場合:

int ID = int.Parse(Session["StudentID"].ToString());
SqlCommand com = new SqlCommand("SELECT Fname FROM StudentUser WHERE StudentID = " + ID, con);
SqlDataReader dr = com.ExecuteReader();
dr.Read();
lblName.Text = dr["Fname"].ToString();
dr.Close();

コードはSqlDataReader機能しますが、慣れていないコードを使用することになったとしても、可能な限りデータ アクセス レイヤーを使用することにしました。親愛なる人々を助けてください。:)

4

2 に答える 2

0

メソッドを呼び出してDAL.GetDataいますが、どこにも保存してDataTableいません..、これを試してみませんか:

DataTable dt1 = DAL.GetData("SELECT Fname FROM StudentUser WHERE StudentID = " + ID);
lblName.Text = dt1["Fname"].ToString();

それ以外の:

DAL.GetData("SELECT Fname FROM StudentUser WHERE StudentID = " + ID);
lblName.Text = dt["Fname"].ToString();

作成したメソッドから返された値を保存する必要があるのは、そのメソッドを呼び出す意味がない場合です。

于 2013-07-04T15:40:15.603 に答える