2008-10-05 9 views
4

Existe-t-il une méthode simple pour stocker les paramètres utilisateur d'une personne dans une base de données SQL 2000? Idéalement, tous les paramètres dans un champ, donc je ne continue pas d'avoir à modifier la table chaque fois que j'ajoute un paramètre. Je pense à la sérialisation d'une classe de paramètres si quelqu'un a un exemple.C# stocker les paramètres utilisateur dans la base de données

La raison pour laquelle je ne veux pas utiliser les paramètres utilisateur .NET intégrés stockés dans le stockage persistant est que le travail utilise des profils super obligatoires, donc lors de la déconnexion des utilisateurs les paramètres sont effacés ce qui est pénible. J'ai posté pour demander des solutions à ce problème, mais je n'ai pas reçu beaucoup de réponse.

Répondre

4

Le concepteur VS conserve les paramètres de propriété dans la classe ApplicationSettingsBase. Par défaut, ces propriétés sont sérialisées/désérialisées dans un fichier XML par utilisateur. Vous pouvez remplacer ce comportement en utilisant un SettingsProvider personnalisé dans lequel vous pouvez ajouter vos fonctionnalités de base de données. Il suffit d'ajouter l'attribut SettingsProvider au VS généré Settings classe:

[SettingsProvider(typeof(CustomSettingsProvider))] 
internal sealed partial class Settings { 
    ... 
} 

Un bon exemple de cela est le RegistrySettingsProvider.

J'ai répondu à une autre question similaire de la même manière here.

1

Vous pouvez facilement sérialiser des classes en C#: http://www.google.com/search?q=c%23+serializer. Vous pouvez soit stocker le XML dans un champ varchar, ou si vous voulez utiliser le sérialiseur binaire, vous pouvez le stocker dans un type de données "Image", ce qui est vraiment binaire.

1

Vous pouvez sérialiser dans une base de données, ou vous pouvez créer une table de paramètres utilisateur contenant des paires nom-valeur et codée par UserId. L'avantage de le faire de cette façon est qu'il est plus facile d'interroger et de mettre à jour via les outils RDMS.

0

Vous avez d'abord besoin de votre table.

create table user_settings 
(
    user_id nvarchar(256) not null, 
    keyword nvarchar(64) not null, 
    constraint PK_user_settings primary key (user_id, keyword), 
    value nvarchar(max) not null 
) 

Ensuite, vous pouvez construire votre API:

public string GetUserSetting(string keyword, string defaultValue); 
public void SetUserSetting(string keyword, string value); 

Si vous faites déjà le développement CRUD (que je suppose de l'existence et de la disponibilité d'une base de données), alors cela devrait être trivialement facile à mettre en place.

Questions connexes