AccessConfigDao.cs
Description du code
AccessConfigDao.cs est un fichier du projet BiblioBrol.Ce fichier est situé dans /var/www/bin/sniplets/bibliobrol/src/.
Projet BiblioBrol :
Gestion de media en CSharp.
Pour plus d'infos, vous pouvez consulter la brève analyse.
Code source ou contenu du fichier
Code c# (AccessConfigDao.cs) (314 lignes)
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using be.gaudry.observer; using be.gaudry.model.exceptions; using be.gaudry.view; namespace be.gaudry.bibliobrol.model.dao.msaccess { public sealed class AccessConfigDao : Observable, IConfigDao { #region singleton static AccessConfigDao instance = null; private DbProviderFactory dbpf; private String conStr; AccessConfigDao() { dbpf = ((AccessFactory)AccessFactory.Instance).getDbpf(); conStr = ((AccessFactory)AccessFactory.Instance).getConnectionString(); } public static AccessConfigDao Instance { get { lock (padlock) { if (instance == null) { } return instance; } } } #endregion #region IConfigDao Members public List<BrolType> loadBrolTypes() { DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.SelectCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; dbDa.SelectCommand.CommandText = str.ToString(); notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.SelectCommand.CommandText, this)); try { dbDa.Fill(typesDt); foreach (DataRow row in typesDt.Rows) { } } catch (Exception e) { } typesDt.Dispose(); dbCon.Close(); return types; } public Person loadOwner() { int ownerId; return(Int32.TryParse(loadConfig("ownerId"),out ownerId))?AccessPersonDao.Instance.loadPerson(ownerId, false):new Person(); } public bool saveOwner(Person owner) { if (owner.Id < 0) { notify(new Notification(Notification.VERBOSE.error, "Impossible de sauver le propriétaire.", this)); return false; } return saveConfig("ownerId", owner.Id.ToString()); } public bool saveConfig(String configName, String configValue) { DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.UpdateCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; dbCon.Open(); str.Append(AccessUtils.escapeAndTrim(configValue)); str.Append("'"); str.Append(" WHERE configName='"); str.Append(AccessUtils.escapeAndTrim(configName)); str.Append("'"); dbDa.UpdateCommand.CommandText = str.ToString(); notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.UpdateCommand.CommandText, this)); try { dbDa.UpdateCommand.ExecuteNonQuery(); } catch (Exception e) { return false; } finally { dbCon.Close(); } notify(new Notification(Notification.VERBOSE.opsResult, "La configuration est correctement modifiée", this)); return true; } public String loadConfig(String configName) { String configValue; DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.SelectCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; dbDa.SelectCommand.CommandText = "SELECT configValue FROM config WHERE configName='" + configName + "'"; notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.SelectCommand.CommandText, this)); try { dbDa.Fill(dataTable); configValue = (String)dataTable.Rows[0]["configValue"]; } catch (Exception e) { configValue = ""; } dataTable.Dispose(); dbCon.Close(); return configValue; } /// <summary> /// Test if the persistance system is available /// </summary> public void testPersistance() { Splasher.Status = "Vérification de la base de données"; bool testPersistence = false; DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.SelectCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; dbDa.SelectCommand.CommandText = "SELECT id FROM type"; try { testPersistence = true; } catch (Exception) { } finally { dbCon.Close(); } if (testPersistence) { string version = loadConfig("persistanceVersion"); switch (version) { case "0.0.1.18": patch080103(); break; default: break; } } } /// <summary> /// insert new category, and return new id to the category object /// </summary> /// <param name="cat">(BrolCategory) category to insert</param> public int insertCategory(BrolCategory cat, BrolType type) { DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.SelectCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; return insertCategory(cat, type, dbCon, dbDa); } /// <summary> /// insert new category, and return new id to the category object /// Use existing DbConnection and DbDataAdapter /// </summary> /// <param name="cat"></param> /// <param name="type"></param> /// <param name="dbCon"></param> /// <param name="dbDa"></param> internal int insertCategory(BrolCategory cat, BrolType type, DbConnection dbCon, DbDataAdapter dbDa) { str.Append("INSERT INTO category (name typeId) VALUES("); str.Append(cat.Name); str.Append(","); str.Append(type.Id); str.Append(");"); dbDa.InsertCommand = dbCon.CreateCommand(); dbDa.InsertCommand.CommandText = str.ToString(); notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.InsertCommand.CommandText, this)); try { dbDa.InsertCommand.ExecuteNonQuery(); //bad smell code : may not work with concurent acces dbDa.InsertCommand.CommandText = "SELECT @@IDENTITY"; return (int)dbDa.InsertCommand.ExecuteScalar(); } catch (Exception e) { return -1; } } /// <summary> /// insert new insertBrolType, and return new id to the insertBrolType object /// </summary> /// <param name="cat">(BrolCategory) category to insert</param> public int insertBrolType(BrolType type) { DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.SelectCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; return insertBrolType(type, dbCon, dbDa); } /// <summary> /// insert new insertBrolType, and return new id to the insertBrolType object /// Use existing DbConnection and DbDataAdapter /// </summary> /// <param name="cat"></param> /// <param name="type"></param> /// <param name="dbCon"></param> /// <param name="dbDa"></param> internal int insertBrolType(BrolType type, DbConnection dbCon, DbDataAdapter dbDa) { str.Append("INSERT INTO type (name) VALUES("); /*str.Append(type.Id); str.Append(",");*/ str.Append(AccessUtils.escapeAndTrim(type.Name)); str.Append(");"); dbDa.InsertCommand = dbCon.CreateCommand(); dbDa.InsertCommand.CommandText = str.ToString(); notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.InsertCommand.CommandText, this)); try { dbDa.InsertCommand.ExecuteNonQuery(); //bad smell code : may not work with concurent acces dbDa.InsertCommand.CommandText = "SELECT @@IDENTITY"; return (int)dbDa.InsertCommand.ExecuteScalar(); } catch (Exception e) { return -1; } } #endregion #region db patches /// <summary> /// Adapt field size /// </summary> private void patch080103() { Splasher.Status = "Installation de la mise à jour 080103 de la base de données"; DbConnection dbCon = dbpf.CreateConnection(); DbDataAdapter dbDa = dbpf.CreateDataAdapter(); dbDa.UpdateCommand = dbCon.CreateCommand(); dbCon.ConnectionString = conStr; dbCon.Open(); dbDa.UpdateCommand.CommandText = "ALTER TABLE [actor] ALTER COLUMN [roleValue] TEXT(100)"; notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.UpdateCommand.CommandText, this)); try { int r = dbDa.UpdateCommand.ExecuteNonQuery(); //if (r==1) //{ dbDa.UpdateCommand.CommandText = "UPDATE [config] SET configValue = '0.0.1.19' WHERE configName = 'persistanceVersion'"; notify(new Notification(Notification.VERBOSE.persistentOperation, dbDa.UpdateCommand.CommandText, this)); r = dbDa.UpdateCommand.ExecuteNonQuery(); //} if (r == 1) { Splasher.Status = "La mise à jour 080103 de la base de données vient d'être appliquée."; } } catch (Exception e) { } finally { dbCon.Close(); } } #endregion } }
Structure et Fichiers du projet
Afficher/masquer...Icône | Nom | Taille | Modification |
Icône | Nom | Taille | Modification |
| _ | Répertoire parent | 0 octets | 1734924754 23/12/2024 04:32:34 |
| _ | utils | 0 octets | 1541007203 31/10/2018 18:33:23 |
Utilisation de l'explorateur de code
- Navigation :
- Un clic sur une icône de répertoire ouvre ce répertoire pour en afficher les fichiers.
- Lorsque le répertoire en cours ne contient pas de sous-répertoires il est possible de remonter vers le répertoire parent.
- La structure de répertoires en treetable (tableau en forme d'arborescence) n'est plus possibledans cette version.
- Un clic sur une icône de fichier ouvre ce fichier pour en afficher le code avec la coloration syntaxique adaptée en fonction du langage principal utilisé dans le fichier.
- Affichage :
- Il est possible de trier les répertoires ou les fichiers selon certains critères (nom, taille, date).
- Actions :
- Les actions possible sur les fichiers dépendent de vos droits d'utilisateur sur le site. Veuillez activer le mode utilisateur pour activer les actions.
Version en cache
23/12/2024 04:32:34 Cette version de la page est en cache (à la date du 23/12/2024 04:32:34) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 16/10/2009, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/cs-bibliobrol-source-rf-model/dao/msaccess//AccessConfigDao.cs.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.