User.Identity.Name
問題は、実際の値ではなく文字列として渡していることです。
SelectCommand = String.Format("SELECT * FROM member WHERE username = '{0}'", User.Identity.Name)
しかし、より良い(そしてより安全な)練習は次のようなものです
SelectCommand = "SELECT * FROM member WHERE username = @UserName"
SelectCommand.Parameters.AddWithValue("@UserName", User.Identity.Name)
これにより、SQL インジェクションが防止されます。
編集:
ページでこれを定義しているため、次のテンプレートを使用できます。
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:Details %>" SelectCommand="SELECT * FROM members WHERE ([username] = @UserName)">
<SelectParameters>
<asp:Parameter Name="UserName" Type="String" DefaultValue="" />
</SelectParameters>
</asp:SqlDataSource>
User.Identity.Name
次に、サーバー側でデフォルト値を設定します。
SqlDataSource1.SelectParameters.Item(0).DefaultValue = User.Identity.Name
これを行う簡単な方法はConfigure Data Source
、デザイン ビューで SqlDataSource オブジェクトの横にある右矢印をクリックして使用できるウィザードを使用することです。