1

ASP.Netフロントエンド、SQLサーバーバックエンドを備えたC#、.Net3.5、3層Webアプリケーションを作成し、TableAdaptersおよびストアドプロシージャを介してそれらとやり取りしています。私はいくつかの奇妙な機能に出くわしました。列を持つ AdminUsers テーブルがあります

UserID int NOT NULL
Username varchar(20) NOT NULL
Hash varchar(50) NOT NULL
Salt varchar(50) NOT NULL
Email  varchar(50) NOT NULL

ログインの認証プロセスの一環として、パスワードを比較する前に、提供されたユーザー名をテーブルで検索します。テーブル内の各 varchar 列の各エントリは、TableAdapter GetData ステートメントを介して返されたときに、15 文字までスペースで右側に埋め込まれているため、これは失敗します。

loginUsername = "ジョー"

storedUsername = "ジョー "

興味深いことに、DB に格納されている値は正しいので、これを確認するために行の挿入を追跡しました。このテーブルを表示する Datagrid も正しく表示されます。この問題は、次のメソッドを呼び出すときにのみ発生します。

public static bool CheckIfUsernameAvailable(string username) {
        AdminUsersDataTable data = DataCalls.GetAdministers();
        foreach (Data.MissionEducate.AdminUsersRow row in data) {
            if (row.Username == username) {
                return false;
            }
        }
        return true;
    }

public static Data.MissionEducate.AdminUsersDataTable GetAdministers() {
        AdminUsersTableAdapter tblApt = new AdminUsersTableAdapter();
        return tblApt.GetData();
    }

そして GetData() は基本的に SELECT * FROM AdminUsers を呼び出します

tableAdapters 選択コマンドの結果の最後にスペースが追加される理由はありますか? このようにデータが保存されているようには見えません。テーブル アダプターはこの動作を頻繁に表示しますか? さらにどのような情報を提供できますか?

どうもありがとう。

4

1 に答える 1