이 정보가 도움이되기를 바랍니다. DataReader를 사용하는 것에 익숙하지만,이 인스턴스에서 DataTable을 사용하는 것이 좋습니다. 나는 '질문'을 포함하는 데이터베이스 테이블을 가지고 있으며 웹 사이트에서 질문을 탐색 할 수있는 기능을 구현하려고합니다.ASP.Net C# - DataTable 사용
간단하고, 질문을 출력하는 레이블 (lblQuestion)과 이전/다음 질문으로 가기위한 뒤로 버튼과 앞으로 버튼이 있습니다.
Session 개체의 DataTable을 저장하는 데 가장 효율적인 방법은 다음과 같습니다.
protected void Page_Load(object sender, EventArgs e)
{
if (!(Page.IsPostBack))
{
getQuestions();
int questionCounter = 1;
ViewState["questionCounter"] = questionCounter;
lblCounter.Text = questionCounter.ToString();
}
}
protected void getQuestions()
{
string connStr = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connStr);
MySqlDataReader reader;
string cmdText = "SELECT * FROM questions WHERE approved='Y' AND module_id=1";
MySqlCommand cmd = new MySqlCommand(cmdText, conn);
try
{
conn.Open();
reader = cmd.ExecuteReader();
DataTable dt1 = new DataTable();
dt1.Load(reader);
reader.Close();
Session["dt1"] = dt1;
lblQuestion.Text = dt1.Rows[0]["question"].ToString();
}
catch
{
lblError.Text = "Database connection error - failed to get questions.";
}
finally
{
conn.Close();
}
}
protected void btnNext_Click(object sender, EventArgs e)
{
int questionCounter = Convert.ToInt32(ViewState["questionCounter"]);
DataTable dt1 = (DataTable)Session["dt1"];
if (questionCounter < dt1.Rows.Count)
{
questionCounter++;
lblQuestion.Text = dt1.Rows[questionCounter-1]["question"].ToString();
ViewState["questionCounter"] = questionCounter;
lblCounter.Text = questionCounter.ToString();
}
else
{
lblQuestion.Text = "the end of questions.";
}
}
protected void btnBack_Click(object sender, EventArgs e)
{
int questionCounter = Convert.ToInt32(ViewState["questionCounter"]);
DataTable dt1 = (DataTable)Session["dt1"];
if (questionCounter > 1)
{
questionCounter--;
lblQuestion.Text = dt1.Rows[questionCounter-1]["question"].ToString();
ViewState["questionCounter"] = questionCounter;
lblCounter.Text = questionCounter.ToString();
}
else
{
lblQuestion.Text = "the beginning of questions.";
}
}
몇개의 질문이 있습니까? 1 년 내에 몇 명이나됩니까? 사용자가 항상 더 많은 질문을 클릭합니까? 즉 모든 질문을 얼마나 자주 보게됩니까? –
예 DataTable의 코드는 세션 개체에 데이터를 올바르게 저장합니다. –
@PaulZahra 표시된 코드의 SQL 문에서 조건을 무시합니다 (현재 20 개 질문). 100 년 이상. 나는 당신의 마지막 질문을 이해하지 못합니다. 모든 질문을 한꺼번에 볼 수는 없지만 사용자가 질문 '은행'의 끝까지 '다음'버튼을 자주 클릭하는 것으로 상상해보십시오. – Bhav