PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : .NET » requêtes paramétrées asp.net » 19/05/2010 10:57:28

Bonjour,
désolé pour le retard de la réponse je reviens de vacances !
j'ai réussi finalement à le faire marcher en ajouter comme projet à la solution les sources de npgsql, la dll seule me sortait des erreurs... Donc pour l'instant tout marche bien et tout, seul bémol lors du déploiement ... le site est déployé suer un windows server 2003 avec framework 2.5 et malgré que je n'utilise pas les sources 3.5 au niveau des requêtes paramétrées il se passe un problème.
Je ne sais pas si tu as eu un cas semblable lors de ton déploiement avec npgsql ?
Merci !

#2 Re : .NET » requêtes paramétrées asp.net » 26/04/2010 10:22:49

Bonjour,
j'ai réussi à trouver le driver en question, il s'agit du psqlODBC, n'ayant pas réussi à trouver sa doc, je me suis décidé à utiliser npgsql, seulement voila  ce lui ci bloque ici

public NpgsqlConnection GetConnection2()
        {
            NpgsqlConnection conn = null;
            try
            {
               //ici il y a un problème, il ne trouve pas le fichier de la classe lors de l'éxecution
                conn = new NpgsqlConnection();

                conn.ConnectionString = "database=base;server=localhost;port=5432;uid=uid";
            }
            catch (NpgsqlException e)
            {
               
                conn = null;
            }
            return conn;
        }

j'ai pourtant ajouté toutes les dll au projet ???


Merci !!!!

#3 Re : .NET » requêtes paramétrées asp.net » 22/04/2010 01:18:36

Bonjour !
voila en fait je ne sais pas quel driver est utilisé pour la connexion, car je n'ai pas le même que toi je pense?
Sais tu comment connaitre le driver qui est utilisé par hasard?
Sinon, pour le reste en effet il ya erreur sur les classes car les driver utilisent souvent leur propres classes pour se connecter !

Merci encore !!!
Bonne soirée!

#4 Re : .NET » requêtes paramétrées asp.net » 20/04/2010 22:15:40

bonjour,
je l'ai essayé et ca ne marche toujours pas...
je ne suis pas sûr d'avoir le bon driver, peux tu me fournir le tien, peut être que le problème vient de là?

Merci encore une fois !
wink

#5 Re : .NET » requêtes paramétrées asp.net » 19/04/2010 21:21:24

bonjour,
merci beaucoup pour ta réponse !
En fait j'ai essayé ta solution
j'ai remplacé :

sqlCmd.CommandText = "INSERT INTO nomtable (log_in, pass_word) VALUES ('@log_in', '@pass_word')";
                sqlCmd.Parameters.Add(new SqlParameter("@log_in", log_in));
                sqlCmd.Parameters.Add(new SqlParameter("@pass_word", pass_word));

par

sqlCmd.CommandText = "INSERT INTO nomtable (log_in, pass_word) VALUES (':log_in', ':pass_word')";
                sqlCmd.Parameters.Add(new SqlParameter(":log_in", log_in));
                sqlCmd.Parameters.Add(new SqlParameter(":pass_word", pass_word));

mais sans succès ... sad
est ce bien cela qu'il fallait comprendre ?

#6 .NET » requêtes paramétrées asp.net » 18/04/2010 15:21:43

oldBoy
Réponses : 10

bonjour,
je suis actuellement en train de développer un site web en Asp.net, framework 3.5 et postgres 1.8.4.
La connexion avec postgres se fait très bien au travers d'un driver récupéré sur le site de postgres.
le problème est que lorsque j'essaie de passer des requêtes paramétrées celles ci ne passent pas.

int retour = -1;
            DbTransaction trans = null;
            try
            {
                // Ouverture Connexion
                CremecFactory myCremec = new CremecFactory();
                _myConnect = (DbConnection)myCremec.GetConnection();
                _myConnect.Open();
                trans = _myConnect.BeginTransaction();

                // Construction de la requete
                DbCommand sqlCmd = _myConnect.CreateCommand();
                sqlCmd.CommandType = CommandType.Text;
                sqlCmd.CommandText = "INSERT INTO nomtable (log_in, pass_word) VALUES ('@log_in', '@pass_word')";
                sqlCmd.Parameters.Add(new SqlParameter("@log_in", log_in));
                sqlCmd.Parameters.Add(new SqlParameter("@pass_word", pass_word));
                

                // Association cmd/transaction
                sqlCmd.Transaction = trans;
                sqlCmd.ExecuteNonQuery();
               
                // Retour ID ajouté
                
                DbCommand sqlCmdRet = _myConnect.CreateCommand();
                sqlCmdRet.CommandType = CommandType.Text;
                sqlCmdRet.CommandText = "select currval('nomtable_seq')";
                sqlCmdRet.Transaction = trans;
                
                Int64 res = (Int64)sqlCmdRet.ExecuteScalar();
                
                retour = (int)res ;
                 
                trans.Commit();

            }
            catch (Exception err)
            {

                if (trans != null)
                {
                    retour = -2;
                    trans.Rollback();
                    Trace.Write(err.Source);
                }
            }
            finally
            {
                try
                {
                    _myConnect.Close();
                }
                catch (Exception err)
                {


                }
            
            }
           
            return retour;

le même code en remplaçant

 sqlCmd.CommandText = "INSERT INTO nomtable (log_in, pass_word) VALUES ('@log_in', '@pass_word')";
                sqlCmd.Parameters.Add(new SqlParameter("@log_in", log_in));
                sqlCmd.Parameters.Add(new SqlParameter("@pass_word", pass_word));

par

sqlCmd.CommandText = "INSERT INTO nomtable (log_in, pass_word) VALUES ('" + log_in + "', '" + pass_word + "')";

marche sans souci mais il est sujet au injections SQL.

au fait le provider est : System.Data.Odbc

voilà en espérant avoir été clair et que les infos données vous permettront de cerner le problème.

Merci d'avance !

Pied de page des forums

Propulsé par FluxBB