J'ai donc un DB (webster.accdb) qui sera obtenir installé sur un serveur (par exemple. \ SERVEUR \ WEBSTER) Cependant différents endroits peuvent avoir différents noms de serveur (ADMIN1 etc etc)C# Chaîne de connexion enregistrée dans AppData?
Lorsque le programme à l'origine installe, il vérifie la chaîne de caractères dans app.config que j'ai mis comme "DEFAULT" - littéralement la chaîne. Le programme vérifie la chaîne de connexion dans app config, et s'il est DEFAULT, il lance une petite invite que j'ai faite qui demande des détails à l'utilisateur concernant le nom du serveur et quelques autres spécificités.
Ils cliquent sur "se connecter" et il écrit la nouvelle chaîne de connexion construite dans app.config et le programme charge après une série de tests.
Maintenant, cela fonctionne sous tests VS et installe sur D: lecteurs dans les dossiers temporaires. Mon problème est que si «correctement» installé à la section des fichiers de programme, alors nous avons maintenant le problème de l'accès étant refusé pour modifier le fichier.
Ainsi, quelqu'un pourrait me diriger dans la bonne direction en ce qui concerne le processus correct que je sais que je le fais mal:
Créer un XML en Appdata pour l'utilisateur, qui a les chaînes de con , et cela est généré lors de la première utilisation, et est utilisé pour les interprétations à partir de ce moment? Enregistrez les paramètres en tant que paramètres et utilisez This code pour mettre à jour les paramètres, puis assurez-vous que tous mes paramètres dans mon programme ne pointent plus vers la configuration, mais vers les paramètres ??
- Quelque chose de mieux parce que je suis désemparé et ce n'est pas du tout la façon dont je devrais faire ça du tout!
code utilisé pour mettre à jour la configuration:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["LOTSConnectionString"].ConnectionString = "Data Source=" + txtpcname.Text + ";Initial Catalog=" + cmbdispense.SelectedItem + ";Integrated Security=False;User ID=webbit;Password=ill923r6MG";
config.Save(ConfigurationSaveMode.Modified, true);
sur une note différente, j'ai simplement bêtement remarqué que je n'ai pas utilisé les paramètres ici .. que j'ai pour toutes les sections SQL. Est-ce encore sensible à l'injection SQL? Je ne l'aurais pas pensé car il ne peut même pas se connecter à la DB, mais je suis sûr que sa meilleure pratique pour le faire d'une manière différente? –