0

すでに適切に実装されているユーザー名とともに、SQLデータベースの変数にアクセスする必要があります。次のステートメントを使用してデータベースにクエリを実行します。

private const string _getUserByUsernameQuery = @"
SELECT
    [User].[username]
FROM
    [User] WITH (NOLOCK) 
    INNER JOIN [Company] WITH (NOLOCK)
    ON [User].[companyId] = [Company].[id]
WHERE
    [User].[username] = @username 
    AND [User].[password] = @password";

次に、データベースに接続して、ユーザー名にアクセスします。

using (SqlConnection connection = new SqlConnection(SQLConfiguration.ConnectionString))
{
   SqlCommand command = new SqlCommand(_getUserByUsernameQuery, connection);
   command.Parameters.AddWithValue("@username", username);
   command.Parameters.AddWithValue("@password", password);
   try
   {
      connection.Open();
      using (SqlDataReader reader = command.ExecuteReader())
      {
         if (reader.Read())
         {
            Username = Convert.ToString(reader["username"]);
            //CompanyId = Convert.ToString(reader["companyId"]);
            lblUsername = Username;
            //lblCompanyId = CompanyId;
            Debug.WriteLine("Testing2::");
            Debug.WriteLine(lblUsername);
            //Debug.WriteLine(lblCompanyId);
         }
      }
   }
   catch (Exception)
   {
      if(connection.State == System.Data.ConnectionState.Open)
      connection.Close();
   }
}

reader ["username"]をUsernameに設定したifステートメントで、debugを使用してUsernameを出力しましたが、値は正しいです。CompanyIdに関連するコメントに私が持っているのは、私がやりたいことですが、できませんでした。これを行ってもエラーは発生しませんが、ステートメント全体が無視されます(それ以外の場合に機能するUsername変数も無視されます)。クエリ文字列に基づいて、変数companyIdにアクセスするにはどうすればよいですか?

4

2 に答える 2

5

あなたの中であなたはフィールド_getUserByUsernameQueryを選択しているだけです。username読み取りたいフィールドがreader[...]selectステートメントに存在することを確認してください。

于 2013-01-02T16:41:30.953 に答える
4

取得できるようにするには、selectステートメントに会社IDを追加する必要があるようです。

private const string _getUserByUsernameQuery = @"
SELECT
    [User].[username], [User].[companyId]
FROM
    [User] WITH (NOLOCK) 
    INNER JOIN [Company] WITH (NOLOCK)
    ON [User].[companyId] = [Company].[id]
WHERE
    [User].[username] = @username 
    AND [User].[password] = @password";
于 2013-01-02T16:42:30.650 に答える