2017-09-20 15 views
-2

私はwanatを使ってデータベースから学生IDを取得しました。ここで私が試したコードですが、何も表示していません。 おかげで...ラベルからデータベースにデータを取り出す方法

protected void Button2_Click(object sender, EventArgs e) 
{ 

     SqlConnection con = new SqlConnection("Data Source=DESKTOP-Q69PRF4;Initial Catalog=new;Integrated Security=True"); 


     if (con.State == ConnectionState.Open) 
     { 
      con.Close(); 
     } 
     con.Open(); 
     string str = "select * from StRecords where StID='" + Session["login"] + "'"; 
     SqlCommand com = new SqlCommand(str, con); 
     SqlDataAdapter da = new SqlDataAdapter(com); 
     DataSet ds = new DataSet(); 
    DataTable dt = new DataTable(); 
     da.Fill(dt); 
    if (dt.Rows.Count > 0) 
    { 
     Label11.Text = dt.Rows[0]["StID"].ToString(); 

    } 


    } 
+0

次のコマンドを実行していません。SqlDataReader reader = command.ExecuteReader(); while(reader.Read()){} –

+0

@RadinGospodinov 'da.Fill(dt);' – fubo

+0

コードをデバッグできますか?あなたの 'Session [" login "]'にある価値があることを確認してください。 – mmushtaq

答えて

1

データベースからわずかStudentIdを取りたい場合は、あなただけのその列を選択し、ExecuteScalarプロパティを使用します。

コード

protected void Button2_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection con = new SqlConnection("Data Source=DESKTOP-Q69PRF4;Initial Catalog=new;Integrated Security=True")) 
    { 
     con.Open(); 
     string str = "select [StID] from StRecords where StID = @stdId;"; 
     using (SqlCommand com = new SqlCommand(str, con)) 
     { 
      com.Parameters.AddWithValue("@stdId", Session["login"]); 
      Label11.Text = com.ExecuteScalar().ToString(); 
     } 
    } 
} 

はまたいつもの代わりにSQLインジェクション攻撃を避けるために、単一引用符で値を渡すパラメータを使用します。

また、Web.Configファイルに接続文字列を指定してみてください。

+0

@fubo:はい私はあなたに同意しています.. – Wanderer

+0

"オブジェクトリファレンスがオブジェクトのインスタンスに設定されていません" –

+1

@hirawaseemその場合は値は返されません。 'Session [" login "]'が有効な値を持っていて、その値があなたのデータベースにも存在するかどうかをデバッグして調べるべきです – fubo

関連する問題