2016-07-11 1 views
0

J'ai une table UserTable avec un nom de champ varchar (20). J'ai un écran d'édition qui a la liaison de données mis en place pour lier à UserTable.name. Le problème est que lorsque je l'édite, le champ a la valeur suivie par des espaces jusqu'à une longueur de 20. En conséquence, l'utilisateur entre dans le champ et essaie, par exemple, d'ajouter un s à la fin de son nom , l'interface utilisateur se plaint car le champ est déjà plein. Comment puis-je obtenir la base de données pour ne pas ajouter ces espaces supplémentaires.SQL C# Interface - Données de chargement SQL remplies d'espaces supplémentaires

Voici le code pour créer la table:

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] 

Voici la requête dans l'adaptateur de table:

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

Une façon serait de "découper" les résultats. Votre solution dépend de la technologie utilisée pour lier. Recherchez des exemples sur le Web. ASP.NET a une solution - en utilisant Entity Framework ou nHibernate a une solution différente. Une manière rapide et sale (et qui ne convient pas pour le code de production) est de rtrim juste dans l'instruction SQL - ceci ajoute un surcoût d'E/S à la requête mais cela va "se faire". – ripvlan

+4

Bizarre c'est habituellement le comportement des colonnes char (taille) pas varchar (taille) celles – Steve

+1

C'est le 'nchar' que vous rencontrez des problèmes, oui? Essayez un 'nvarchar' à la place. –

Répondre

0

Dans le code généré Visual Studio, il nom défini en tant que char. Quand j'ai fait une recherche à travers le projet entier, j'ai pu voir cela et le changer en varchar dans les quatre ou cinq endroits où il est apparu. Lorsque j'ai testé le code à nouveau, cela a fonctionné comme prévu.