1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
namespace Database
{
enum DbType
{
SqlServCe = 0,
SqlServ = 1,
Oracle = 2,
MySQL = 3
}
public class Database
{
/** \brief Nom du fichier servant de base de données */
protected string filename;
/** \brief Hôte de connexion a la base de données */
protected string host;
/** \brief Port de connexion a la base de données */
protected int port;
/** \brief Utilisateur de la base de données */
protected string user;
/** \brief Mot de passe pour la connexion a la base de données (mot de passe utilisateur) */
protected string password;
/** \brief Langue par défaut utilisée pour la base de données */
protected string lcid = "1036";
/** \brief Liste des immatriculations */
protected List<string> listImmat;
/** \brief Présence d'une encryption sur la base de données */
protected bool encrypt = true;
private SqlCeDB sqlCeDB;
/** \brief Constructeur par recopie */
public Database(string _host, string _name, int _port, string _user, string _pass)
{
this.filename = _name;
this.host = _host;
this.port = _port;
this.user = _user;
this.password = _pass;
}
/** \brief Constructeur par recopie pour la création d'une base de données locale */
public Database (string _name, string _pass )
{
this.filename = _name;
this.password = _pass;
}
/** \brief Creation de la base de données */
public virtual void Create ()
{ }
/** \brief Connexion a la base de données */
public virtual void Connect ()
{ }
/** \brief Fermeture de la connexion à la base de données */
public virtual void Close ()
{ }
}
/**
* \brief Classe gérant les connexion et utilisation d'une base de données SQL Server Compact (locale)
*/
public class SqlCeDB : Database
{
/** \brief Connection utilisée pour accéder à la base de données */
private SqlCeConnection conn = null;
/** \brief Informations de connexion */
private string connString;
/** \brief Constructeur */
public SqlCeDB(string _host, string _name, int _port, string _user, string _pass)
: base(_host, _name, _port, _user, _pass)
{
connString = "Data Source = '" + filename + "'; LCID=" + lcid + "; Password = " + password + "; Encrypt = " + encrypt + ";";
}
/** \brief Constructeur */
public SqlCeDB ( string _name, string _pass )
: base(_name, _pass)
{
connString = "Data Source = '" + filename + "'; LCID=" + lcid + "; Password = " + password + "; Encrypt = " + encrypt + ";";
}
/** \brief Création d'une base de données locale de type SQL Serveur Compact */
public override void Create()
{
if (Properties.Settings.Default.DbType == ((int) DbType.SqlServCe))
{
SqlCeConnection connect = new SqlCeConnection();
try
{
// Création de la base de données
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();
engine.Dispose();
// Connection à la base de données
connect.ConnectionString = connString;
connect.Open();
// Creation des tables
SqlCeCommand cmd = connect.CreateCommand();
cmd.CommandText = "CREATE TABLE Table1 (id int IDENTITY(1,1) PRIMARY KEY, data1 ntext, data2 ntext, data2 ntext)";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE TABLE Table2 (id int IDENTITY(1,1) PRIMARY KEY, id_table1 int, data ntext, date datetime)";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("Erreur lors de la création de la base de données locale:" + ex.Message);
}
finally
{
connect.Close();
}
}
}
/** \brief Ouverture d'une connexion à la base de données */
public override void Connect()
{
if ( Properties.Settings.Default.DbType == ( (int)DbType.SqlServCe )
{
try
{
// Connection à la base de données
conn = new SqlCeConnection(connString);
conn.Open();
}
catch
{
throw new Exception("Erreur lors de la connexion à la base de données locale.");
}
/*finally
{
conn.Close();
}//*/
}
}
/** \brief Fermeture de la connexion */
public override void Close()
{
if (Properties.Settings.Default.DbType == ( (int)DbType.SqlServCe))
{
// On vérifie l'état de la connexion avant de la fermer
if (conn.State != System.Data.ConnectionState.Closed)
{
conn.Dispose();
conn.Close();
}
}
}
} |
Partager