2016-07-11 10 views
0

フィールドUserNameにvarchar(20)という名前のテーブルUserTableがあります。 UserTable.nameにバインドするようにデータバインディングを設定した編集画面があります。問題は、私がそれを編集しているときに、フィールドの長さが最大20のスペースの後に値があることです。その結果、ユーザーはフィールドを入力し、たとえば、名前の末尾にsを追加しようとします、フィールドが既にいっぱいになっているため、ユーザーインターフェイスに不満があります。これらの余分なスペースをデータベースに追加しないようにするにはどうすればよいですか。ここでSQL C#インターフェイス - 余分なスペースで埋め込まれたSQL読み込みデータ

は、テーブルを作成するためのコードです:ここでは

CREATE TABLE [dbo].[US_usertable](
    [user_name] [varchar](20) NOT NULL, 
    [password] [varchar](100) NOT NULL, 
    [departmentID] [int] NOT NULL, 
    [employeeID] [int] IDENTITY(1,1) NOT NULL, 
    [emailaddress] [nchar](30) NULL, 
CONSTRAINT [PK_US_usertable] PRIMARY KEY CLUSTERED 
(
    [employeeID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

は、テーブルアダプタでのクエリです:Visual Studioで

SELECT emailaddress, employeeID, departmentID, user_name, password FROM us_usertable WHERE (employeeID = @empID) 
+3

1つの方法は、結果を「トリム」することです。ソリューションは、バインドに使用されているテクノロジによって異なります。 Webで例を検索します。 ASP.NETには、Entity FrameworkまたはnHibernateを使用するソリューションがあります。素早く汚れた方法(そしてプロダクションコードには適していません)は、SQL文の中でrtrimを正しく実行することです。これにより、I/Oオーバーヘッドがクエリに追加されますが、これは "完了"します。 – ripvlan

+4

これはuscharally char(size)カラムの動作はvarchar(size)のものではありません – Steve

+1

これはあなたが問題を抱えている 'nchar'ですか?代わりに 'nvarchar'を試してください。 –

答えて

0

コードを生成し、それがcharとして名前を定義しました。プロジェクト全体を通して検索したとき、私はそれを見て、それが現れた4つか5つの場所でそれをvarcharに変更することができました。コードをもう一度テストしたとき、それは想定されていたように機能しました。

関連する問題