2016-12-29 12 views
-3
void GetUsername(string Username) 
{ 
    SqlConnection con = new SqlConnection("Data Source=METHOUN-PC;Initial Catalog=ITReportDb;Integrated Security=True"); 
    SqlCommand cmd = new SqlCommand("Select UserName from tblLogin where UserId='" + Username + "'", con); 
    con.Open(); 
    SqlDataReader rdr = cmd.ExecuteReader(); 
    if (rdr.Read()) 
    { 
    TextBox1.Text = rdr.GetValue(0).ToString(); 
    } 
    rdr.Close(); 
    con.Close(); 
} 
+1

あなたは何を達成したいのか、何をしたのか説明しなければなりません。コードを単独で投稿する必要はありません。そのようにフォーマットしてください。 – NicoRiff

+1

本当にユーザー名でユーザー名を取得しますか? – gabba

+1

[SQLインジェクションアラート](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - SQLステートメントを連結しない** ** ** SQLインジェクションを避けるためにパラメータ化されたクエリ** –

答えて

0

クエリで1つの値のみが返されると確信できる場合はExecuteScalarメソッドを使用できます。

void GetUsername(string Username) 
{ 
    var sql = @" 
     SELECT UserName 
     FROM tblLogin 
     WHERE UserId = @Username 
    "; 
    var connectionString = @" 
     Data Source=METHOUN-PC; 
     Initial Catalog=ITReportDb; 
     Integrated Security=True 
    "; 

    using (var con = new SqlConnection(connectionString)) { 
     con.Open(); 
     var cmd = con.CreateCommand(); 
     cmd.CommandText = sql; 
     cmd.Parameters.AddWithValue("@Username", Username); 
     TextBox1.Text = cmd.ExecuteScalar()?.ToString(); 
     con.Close(); 
    } 
} 
+0

クエリがNULLを返すとどうなりますか? –

+0

nullの場合、例外がスローされます。おそらく、あなたがこれに従うことを避けるために:http://stackoverflow.com/a/20295696/637840 – NicoRiff

+0

おそらく、別のリンクを参照するのではなく、あなたの答えにその可能性を扱います。また、 'using'を忘れないでください。 –

0
textBox.Text = GetUsername(userID); 

string GetUsername(string userID) { 
    var resultTable = new DataTable(); 
    var connection = new SqlConnection("Data Source=METHOUN-PC;Initial Catalog=ITReportDb;Integrated Security=True"); 
    con.Open(); 
    var command = new SqlCommand("SELECT Username FROM tblLogin WHERE UserId='" + userID + "';", connection); 
    var adapter = new SqlDataAdapter(command); 
    adapter.Fill(resultTable); 
    con.Close(); 
    return resultTable.Rows[0]["Username"].ToString(); 
} 

私は個人的には、上記の方法を使用します。 SqlDataAdapterクラスを使用すると、複数のユーザー名を表示することに決めたら将来的に役立ちます。

関連する問題