Ajout / Suppression LinQ to SQL - DB temporaire?
Bonjour à tous,
Je dois présenter un projet en C# pour ma seconde session et je me retrouve avec un petit soucis.
Le contexte:
Réalisation d'un jeu, ici une bataille terrestre, réalisée entre autre en C# / C++ pour l'IA. La base de données est en SQL CE et nous devons utiliser du LinQ to SQL.
La base de données:
3 tables: le joueur, la partie et la participation. Pour l'instant ce qui nous intéresse est la table Joueur qui est composé d'un Pseudo, d'un password, de l'argent en poche, et du nombre de canon que l'utilisateur possède.
explication du problème:
J'ai testé trois possibilités:
1°) Ajout d'un nouvel utilisateur, d'aprés les différents messages la connexion est fonctionnelle, et en effet je lance l'ajout de l'utilisateur et je vais pour me connecter par la suite aucun problème il me connecte et me met pas de messages d'erreurs (alors que si l'utilisateur est inexistant il me met un message d'erreur et une fois co je peux aller dans les statistiques ou j'ai les infos corrects)
2°) Ajouter a la main dans la base de données un utilisateur et tenter de me connecter avec. La encore la connexion ne passe sans problèmes et les infos sorties dans le profil sont les bonnes. Donc niveau lecture aucun problème.
3°) Suppression du compte via l'interface créée, la encore il me note que le compte est supprimé et quand je veux me reco avec il fait comme s'il n'existait plus. Mais si je regarde dans la base de données après avoir fermé le projet le compte est toujours existant.
Pour les points 1 et 3 donc si je relance le programme c'est comme si je n'avais rien fait le compte ajouté n'existe plus et le compte supprimé est toujours présent. Un peu comme s'il écrivait via une base de données temporaire qui était basée sur l'existante mais qui est supprimée à la fin de chaque test du projet.
Niveau code:
Inscription.cs:
Code:
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
| using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Linq;
namespace Prototype2Screens
{
/// <summary>
/// Logique d'interaction pour Inscription.xaml
/// </summary>
public partial class Inscription : UserControl
{
private String erreur;
public Inscription()
{
this.InitializeComponent();
}
//Annulation de l'inscription
private void BtnRetourPgConnexion_Click(object sender, RoutedEventArgs e)
{
//Test pour voir si l'on a rien entré avant
NavigationWindow.GetWindow(this).Content = (new Connexion());
}
//Inscription d'un nouvel user
private void btnValiderInscription_Click(object sender, RoutedEventArgs e)
{
if (this.verifChamps())
{
Joueur joueur = new Joueur();
joueur.Pseudo = txtBoxPseudo.Text;
joueur.Password = pwdBoxPwd.Password.ToString();
joueur.NbCanon = 1;
joueur.ArgentEnPoche = 1000;
try
{
(new DataAccess()).ajouterJoueur(joueur);
DataManager.setJoueur(joueur);
NavigationWindow.GetWindow(this).Content = (new Connexion());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Alerte");
}
}
else
{
MessageBox.Show("Joueur déjà existant", "Erreur Inscription", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
//Vérifie si les champs sont correctement complétés
public Boolean verifChamps()
{
Boolean isOK = true;
erreur = "Veuillez corriger la(les) erreur(s) suivante(s) : ";
if (String.IsNullOrEmpty(this.txtBoxPseudo.Text.ToString()) == true)//Le pseudo est vide
{
erreur += "\n - Le champ du pseudo ne peut être vide";
isOK = false;
}
if (String.IsNullOrEmpty(this.pwdBoxPwd.Password.ToString()) == true )//Mot de passe vide
{
erreur += "\n - Le champ du mot de passe ne peut être vide";
isOK = false;
}
if (String.IsNullOrEmpty(this.pwdBoxConfirmPwd.Password.ToString()) == true)//Mot de passe de confirmation est vide
{
erreur += "\n - Le champ de confirmation du mot de passe ne peut être vide";
isOK = false;
}
if (this.pwdBoxPwd.Password.ToString().CompareTo(this.pwdBoxConfirmPwd.Password.ToString()) != 0)//les mots de passe sont différents
{
erreur += "\n - Les deux mots de passe ne peuvent être différent";
isOK = false;
}
if (!isOK)//On affiche une popup avec les messages d'erreurs
{
MessageBox.Show(erreur, "Erreur", MessageBoxButton.OK, MessageBoxImage.Error);
}
return isOK;
}
}
} |
DataAccess.cs
Code:
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 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace Prototype2Screens
{
class DataAccess
{
private DBJEUCsharpDataContext db;
public DataAccess()
{
try
{
//open DB connexion
string conString = "Data Source=|DataDirectory|\\DBJEUCsharp.sdf";
db = new DBJEUCsharpDataContext(conString);
System.Console.WriteLine("Connexion OK");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
// ajoute un joueur dans la DB
public void ajouterJoueur(Joueur joueur)
{
try
{
db.Joueur.InsertOnSubmit(joueur);
db.SubmitChanges();
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Alerte");
}
}
// récuperer le joueur dans la DB
public Joueur getJoueur(Joueur j)
{
List<Joueur> joueurs = new List<Joueur>();
try
{
var result = from p in db.Joueur where p.Pseudo == j.Pseudo && p.Password == j.Password select p;
joueurs.AddRange(result);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
foreach (Joueur joueur in joueurs)
{
j.Pseudo = joueur.Pseudo;
j.Password = joueur.Password;
j.NbCanon = joueur.NbCanon;
j.ArgentEnPoche = joueur.ArgentEnPoche;
}
return j;
}
//Verifier l'existance du joueur
public Boolean checkJoueur(String pseudo)
{
Boolean b;
List<Joueur> joueurs = new List<Joueur>();
try
{
var result = from j in db.Joueur where j.Pseudo == pseudo select j;
joueurs.AddRange(result);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
int i = 0;
foreach (Joueur j in joueurs)
{ i++; }
if (i == 0)
b = false;
else
b = true;
return b;
}
// modification du mot de passe du joueur
public void modifierMDP(Joueur j, String mdp)
{
try
{
Joueur joueur = (from x in db.Joueur where x.Pseudo == j.Pseudo select x).Single();
joueur.Password = mdp;
db.SubmitChanges();
}
catch (Exception e)
{
throw e;
}
}
//suppression d'un joueur
public void deleteJoueur(Joueur joueur)
{
try
{
Joueur j = (from x in db.Joueur where x.Pseudo == joueur.Pseudo select x).Single();
db.Joueur.DeleteOnSubmit(j);
db.SubmitChanges();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
// ajouter un canon au joueur.
public void ajouterCanon(Joueur j)
{
try
{
Joueur joueur = (from x in db.Joueur where x.Pseudo == j.Pseudo select x).Single();
joueur.NbCanon = (joueur.NbCanon) + 1;
joueur.ArgentEnPoche = (joueur.ArgentEnPoche) - 100000;
db.SubmitChanges();
j.ArgentEnPoche = joueur.ArgentEnPoche;
j.NbCanon = joueur.NbCanon;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
//vérifier si assez d'argent pour acheter un canon
public Boolean checkArgent(String pseudo)
{
Boolean b = false;
Joueur joueur;
try
{
joueur = (from j in db.Joueur where j.Pseudo == pseudo select j).Single();
if (joueur.ArgentEnPoche >= 100000)
b = true;
else
b = false;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return b;
}
}
} |
DataManager.cs
Code:
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
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Prototype2Screens
{
class DataManager
{
private static Joueur joueur;
public static void setJoueur(Joueur j)
{
joueur = (new DataAccess()).getJoueur(j);
}
public static Joueur getJoueur()
{
return joueur;
}
}
} |
Auriez vous une idée d'où ça peut venir ? Comment je peux corriger ça?
En vous remerciant d'avance !
Evenae
Edit: s'il vous manque des informations n'hésitez pas a demander.