Je ne suis pas sur de bien comprendre ce que signifie "Il ne trouve pas le fichier de la classe", mais ton projet étant un projet ASP.NET, es tu bien sur de déployer la dll de npgsql sur le serveur IIS, au bon endroit ?
]]>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 !!!!
]]>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!
Quel pilote as tu téléchargé ?
Quel assembly références tu dans ton projet ?
Quelle instruction using emploies tu ?
Merci encore !!!
Bonne soirée!
Il faudrait être sur d'utiliser les classes de npgsql, par exemple pour la déclaration de la commande :
NpgsqlCommand sqlCmd= new NpgsqlCommand(...
et NpgsqlParameter au lieu de SqlParameter.
En fait, sauf si tu as besoin d'utiliser en même temps un accès à SQL Server ou à une autre base de donnée, tu ne devrais avoir, pour l'accès aux données, que
using System.Data;
using Npgsql;
Dernier problème, il ne faut pas de ' ' dans le VALUES, et le code devrait ressembler à ceci :
sqlCmd.CommandText = "INSERT INTO nomtable (log_in, pass_word) VALUES (:log_in, :pass_word)";
sqlCmd.Parameters.Add(new NpgsqlParameter("log_in", log_in));
sqlCmd.Parameters.Add(new NpgsqlParameter("pass_word", pass_word));
J'ai fait mes essais avec Npgsql2.0.6
]]>Merci encore une fois !
Essaie sans mettre les : dans l'affectation des paramètres, ce qui devrait donner ce code :
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));
(Il faut les : quand on définit la requête, mais pas quand on affecte une valeur aux paramètres)
]]>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 ...
est ce bien cela qu'il fallait comprendre ?
Quel pilote utilisez vous pour accéder à PostgreSQL ?
S'il s'agit de Npgsql, les paramètres doivent être préfixés par : au lieu de @
Dominique
]]>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 !
]]>