2012-03-21 22 views
0

こんにちは、私を助けることができますか?ASP.netのデータベースから値を取得できません

私はこのコードを持っています。私は3番目のテキストボックスにクエリの結果を表示したいが表示しません。

string query = "SELECT UserID FROM [IBSI].[sec].[Users] WHERE UserName = '" + TextBox2.Text + "'"; 

if (query != null) 
{ 
    using (SqlConnection conn = new SqlConnection(connect)) 
    { 
    using (SqlCommand cmd = new SqlCommand(query, conn)) 
    { 

     conn.Open(); 
     SqlDataReader rdr = cmd.ExecuteReader(); 
     if (rdr.HasRows) 
     { 
     while (rdr.Read()) 
     { 

     TextBox3.Text=rdr["UserID"].ToString() ; 


     } 
     } 
    } 
    } 
} 

しかし、私は出力を見ることができる条件なしでこのクエリを使用します。

デバッガから
string query = "SELECT UserID FROM [IBSI].[sec].[Users]"; 

事前に感謝

+0

は、あなたが結果を取得する場合も、あなただけの1つの結果を返すされているので、参照して、SQL Managerでtextbox2.textからの値を持つフィルタを含むクエリを実行し、 ExecuteScalar()は、パラメータ化されたクエリを推奨するExecuteReader() –

答えて

2

私はこの作業のために、パラメータ化クエリを使用してお勧めします。また、ユーザー入力(テキストボックス/メモのような)からSQLコードを生成すると、SQLインジェクションが発生しやすくなります(データベースデータにダメージを与えるSQLコードをテキストボックスに入力する可能性があります)。

サンプルパラメーターの使用法は、このようなものです:

string query = "SELECT UserID FROM [IBSI].[sec].[Users] WHERE UserName = @1"; 
if (query != null) 
{ 
    using (SqlConnection conn = new SqlConnection(connect)) 
    { 
     using (SqlCommand cmd = new SqlCommand(query, conn)) 
     { 
      SqlParameter p1 = new SqlParameter("@1", TextBox2.Text); 
      cmd.Parameters.Add(p1); 
      conn.Open(); 
      SqlDataReader rdr = cmd.ExecuteReader(); 
      if (rdr.HasRows) 
      { 
       while (rdr.Read()) 
       { 
        TextBox3.Text=rdr["UserID"].ToString() ; 
       } 
      } 
     } 
    } 
} 
+0

+1よりも優れた機能です。しかし、私はさらに**明確で明白な**パラメータ名を使用することをお勧めします。特に@ 1の代わりに '@ UserName'を使用することをお勧めします。 –

+1

ありがとう! 真実、私の愚か。 :) –

0

ステップとクエリが結果を返していることを確認してください。あなたのコード内

0

EYバートの変更を次のように

string query = "SELECT UserID FROM [IBSI].[sec].[Users] WHERE UserName= '"+TextBox2.Text+ "'";  

if (query != null)  
{  
    using (SqlConnection conn = new SqlConnection(connect))  
    {  
    using (SqlCommand cmd = new SqlCommand(query, conn))  
    { 
     conn.Open();  
     int UserId; 
     UserId=Convert.ToInt32(cmd.ExecuteScalar()); 
     TextBox3.Text=UserId.ToString() ;   
    }  
    }  
}  
関連する問題