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