Insertion valide mais y a rien dans le tableau??

M5N Messages postés 5 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 19 octobre 2009 - 16 oct. 2009 à 16:49
Marroubi Messages postés 51 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 30 octobre 2009 - 19 oct. 2009 à 19:29
Bonjour,

j'ai créer une aplication à laquelle j'ai connecté une base de donnée sql server,je souhaite mettre a jour une table, le problème est qu'elle ne soit pas mettre à jour! ou moment ou la procedure d'insertion indique que tout va bien et la transaction est valide, j'arrive pas à localisé le problème, si qqun a une idée n'hesitez pas...

voici la procédure:

public void insertion()
{

// exploitation du fichier de configuration [App.config]
string connectionString = null;
try
{
connectionString = ConfigurationManager.ConnectionStrings["filtres.Properties.Settings.basedapprentissageConnectionString"].ConnectionString;
}
catch (Exception e)
{
MessageBox.Show("Erreur de configuration : {0}" + e.Message, "Ajout à la base d'apprentissage", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

SqlCeConnection connexion = new SqlCeConnection(connectionString);

try
{
string myQuery = "INSERT INTO [echantillonapp] ([A], [B], [C]) VALUES (@A,@B,@C)";
SqlCeCommand myCommand = new SqlCeCommand(myQuery);
myCommand.Connection = connexion;
// ouverture connexion
if (myCommand.Connection.State != ConnectionState.Open)
{
myCommand.Connection.Open();
}
myCommand.CommandType = System.Data.CommandType.Text;
myCommand.CommandText = myQuery;

SqlCeParameter param1 = new SqlCeParameter("@A", SqlDbType.Real);
SqlCeParameter param2 = new SqlCeParameter("@B", SqlDbType.Real);
SqlCeParameter param3 = new SqlCeParameter("@C", SqlDbType.Real);

param1.Value = 145;
param2.Value = 145;
param3.Value = 145;
// initialisation paramètres
myCommand.Parameters.Add(param1);
myCommand.Parameters.Add(param2);
myCommand.Parameters.Add(param3);

myCommand.Prepare();
// transaction
SqlCeTransaction transaction = null;
try
{
// début transaction
transaction = connexion.BeginTransaction();
// la commande SQL doit être exécutée dans cette transaction
myCommand.Transaction = transaction;
// exécution requête
int nbLignes = myCommand.ExecuteNonQuery();
// on valide la transaction
transaction.Commit();

// affichage résultat
MessageBox.Show("transaction validée...", "Ajout à la base d'apprentissage",MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
// on défait la transaction
transaction.Rollback();
// msg d'erreur
MessageBox.Show("transaction invalidée..." + "(" + ex.Message + ")", "Ajout à la base d'apprentissage", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
// msg d'erreur
MessageBox.Show("Erreur d'accès à la base de données (" + ex.Message + ")", "Ajout à la base d'apprentissage", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

finally
{
connexion.Close();
}

}



Merci

3 réponses

Marroubi Messages postés 51 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 30 octobre 2009 2
19 oct. 2009 à 11:24
Salut;
Le code me semble logique est correcte!!
mais bien localiser ton problème tu peux essayer le même code sans transaction.
0
M5N Messages postés 5 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 19 octobre 2009
19 oct. 2009 à 15:16
salut;
merci pour ta réponse, j'ai essayé tout mais ça n'a pas donné de résultat malheureusement, je ponse que le problème est dans les liens ou la configuration!!, j'espère touvé une solution en urgence svp j'"attend votre aide.
Merci d'avance
0
Marroubi Messages postés 51 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 30 octobre 2009 2
19 oct. 2009 à 19:29
Salut;

## je ponse que le problème est dans les liens ou la configuration!! ##

d'accord, selon ton premier message le message suivant s'affiche après l'exécution ## transaction validée.. ##
c'est à dire qu'aucun problème ne survient lors de l'ouverture de votre connexion ; alors la configuration de votre chaine de connexion est 100% correcte.

essayer de mettre un point d'arrêt et suit votre code pour bien vérifier que tout va bien.

d'autre part j'ai un exemple semblable que ce cas, mais sans transaction et avec une base de données accès, essaye de faire une comparaison, voilà le code :

########################################
Public Shared Function Inserer(ByVal nom As String, ByVal informations As String, ByVal image As [Byte]())

Try
'Ouverture de la connection.
SupHerbesBibliotheque.Connexion.Open()
Dim querString As String
If image Is Nothing Then
querString = "INSERT INTO Maladies([Nom], [Information], [Image]) VALUES (?, ?, '')"
Else
querString = "INSERT INTO Maladies([Nom], [Information], [Image]) VALUES (?, ?, ?)"
End If
Dim command As New OleDb.OleDbCommand(querString, SupHerbesBibliotheque.Connexion.Connexion)
Dim parNom As New OleDb.OleDbParameter
parNom.ParameterName = "Nom"
parNom.OleDbType = OleDb.OleDbType.VarWChar
parNom.Direction = ParameterDirection.Input
parNom.Value = nom
command.Parameters.Add(parNom)
Dim parInfos As New OleDb.OleDbParameter
parInfos.ParameterName = "Information"
parInfos.OleDbType = OleDb.OleDbType.VarWChar
parInfos.Direction = ParameterDirection.Input
parInfos.Value = informations
command.Parameters.Add(parInfos)
If Not image Is Nothing Then
Dim parImage As New OleDb.OleDbParameter
parImage.ParameterName = "Image"
parImage.OleDbType = OleDb.OleDbType.VarBinary
parImage.Direction = ParameterDirection.Input
parImage.Value = image
command.Parameters.Add(parImage)
End If
command.ExecuteNonQuery()
Return True
Catch ex As Exception
Return False
End Try

End Function

##########################
0
Rejoignez-nous