OVH Cloud OVH Cloud

Preciser Provider dans chaine de connection sous aspnet

9 réponses
Avatar
François Müller
Bonjour

Je me trouve avec un petit soucis : je ne peux pas etablir de connection a
ma base de donnee via mon appli aspnet.(appli en C#)

- J'utilise une base de donnees PostGreSql (sous Linux RedHat)

- J'ai un composant de connection OLE DB tiers partie fournit par ConnX. Ce
composant fonctionne correctement pour connecter les base PostGreSql en
dehors de l'environnement ASPNET.

- Neanmoins, l'utilisation de ce composant suppose de preciser le Provider
dans la chaine de connexion a la database
(Provider=CONNXOLEDB.1)

- Or, AspNet (ou dotnet ?)ne supporte plus qu'on précise le Provider dans la
chaîne de connexion (pourquoi ? en OleDB a l;'époque héroïque de VB6 c'était
accepte ?

- Donc comment définir le provider OLEDB qu'on utilise sur une appli
Aspnet/DotNet

Précision : je ne travaille avec dotnet et aspnet que depuis une dizaine de
jour, donc désolé si il suffisait de RTFM mais dans ce cas m'indiquer le FM
à lire ;-))

Merci par avance

F:

9 réponses

Avatar
Patrice Manac'h
Bonjour,

Si vous utilisez le connecteur managé OLE DB (OleDBConnection), vous devez
préciser le provider dans la chaîne. Avez-vous un exemple de ce qui vous
pose problème ?

Exemple MSDN :
public void InsertRow(string myConnectionString)
{
// If the connection string is null, use a default.
if(myConnectionString == "")
{
myConnectionString = "Provider=SQLOLEDB;Data Source=localhost;Initial
Catalog=Northwind;" +
"Integrated Security=SSPI;";
}
OleDbConnection myConnection = new OleDbConnection(myConnectionString);
string myInsertQuery = "INSERT INTO Customers (CustomerID, CompanyName)
Values('NWIND', 'Northwind Traders')";
OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}

Cordialement,

P. Manac'h
MCS France


"François Müller" a écrit dans le message de
news:
Bonjour

Je me trouve avec un petit soucis : je ne peux pas etablir de connection a
ma base de donnee via mon appli aspnet.(appli en C#)

- J'utilise une base de donnees PostGreSql (sous Linux RedHat)

- J'ai un composant de connection OLE DB tiers partie fournit par ConnX.
Ce composant fonctionne correctement pour connecter les base PostGreSql en
dehors de l'environnement ASPNET.

- Neanmoins, l'utilisation de ce composant suppose de preciser le Provider
dans la chaine de connexion a la database
(Provider=CONNXOLEDB.1)

- Or, AspNet (ou dotnet ?)ne supporte plus qu'on précise le Provider dans
la chaîne de connexion (pourquoi ? en OleDB a l;'époque héroïque de VB6
c'était accepte ?

- Donc comment définir le provider OLEDB qu'on utilise sur une appli
Aspnet/DotNet

Précision : je ne travaille avec dotnet et aspnet que depuis une dizaine
de jour, donc désolé si il suffisait de RTFM mais dans ce cas m'indiquer
le FM à lire ;-))

Merci par avance

F:






Avatar
François Müller
Bonjour
"Patrice Manac'h" a écrit dans le message de
news: %
Si vous utilisez le connecteur managé OLE DB (OleDBConnection), vous devez
préciser le provider dans la chaîne. Avez-vous un exemple de ce qui vous
pose problème ?



Merci de votre réponse, mais c'est précisément ce qui n'est pas possible.
Quand je précise le Provider dans ma chaîne (dans un fichier webconfig)
j'obtient l'erreur suivante

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.ArgumentException: Keyword not supported:
'provider'.

Source Error:

J'ai l'habitude d'OLE DB en environnement VC++, VB 6.0, mais aparrament en
env. .NET les choses se passent différemment

F.
Avatar
Patrice
Je sais que le provider disparait effectivement de la chaine de connexion
pour un fournisseur spécifique ("SqlClient" par exemple car on sait quel est
ce fournisseur). Par contre le fournisseur OleDb reste générique et je ne
vois pas comment on pourrait se passer de préciser le fournisseur.

Le plus simple serait de nous montrer le code minimal qui plante de cette
façon avec la chaine de connexion en "dur".

Patrice


--

"François Müller" a écrit dans le message de
news:
Bonjour
"Patrice Manac'h" a écrit dans le message


de
news: %
> Si vous utilisez le connecteur managé OLE DB (OleDBConnection), vous


devez
> préciser le provider dans la chaîne. Avez-vous un exemple de ce qui vous
> pose problème ?

Merci de votre réponse, mais c'est précisément ce qui n'est pas possible.
Quand je précise le Provider dans ma chaîne (dans un fichier webconfig)
j'obtient l'erreur suivante

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.ArgumentException: Keyword not supported:
'provider'.

Source Error:

J'ai l'habitude d'OLE DB en environnement VC++, VB 6.0, mais aparrament en
env. .NET les choses se passent différemment

F.




Avatar
François Müller
"Patrice" a écrit dans le message de news:
Je sais que le provider disparait effectivement de la chaine de connexion
pour un fournisseur spécifique ("SqlClient" par exemple car on sait quel
est
ce fournisseur). Par contre le fournisseur OleDb reste générique et je ne
vois pas comment on pourrait se passer de préciser le fournisseur.

Le plus simple serait de nous montrer le code minimal qui plante de cette
façon avec la chaine de connexion en "dur".



Merci de t'occuper de mon probleme :

Voici :
public GenericTransaction(IDbConnection cnx)

{

cache = new Hashtable();

cnx.Open();

tx = cnx.BeginTransaction();

}

public GenericTransaction() : this(new
SqlConnection("Provider=CONNXOLEDB.1;Persist Security Infoúlse;User
ID=;Data
Source=C:CONNX32UTILSCONNX.cdd;Location=;Mode=Read/Write;Extended
Properties="))

{

}

Plus directe et plus simple , on peut pas faire

Francois
Avatar
Patrice
Ok, tu utilises les classes présentes dans SqlClient qui sont spécifiques à
SQL SERVER et pour lesquels le provider n'a pas de sens (vu que c'est
forcément SQL Server).

A la place des classes Sql... utilises les classes OleDb... et cela devrait
coller. Les classes OleDb permettent de se connecter à une source OleDb
quelconque et nécessitent donc de connaître le fournisseur...

Patrice

--

"François Müller" a écrit dans le message de
news:

"Patrice" a écrit dans le message de news:
> Je sais que le provider disparait effectivement de la chaine de


connexion
> pour un fournisseur spécifique ("SqlClient" par exemple car on sait quel
> est
> ce fournisseur). Par contre le fournisseur OleDb reste générique et je


ne
> vois pas comment on pourrait se passer de préciser le fournisseur.
>
> Le plus simple serait de nous montrer le code minimal qui plante de


cette
> façon avec la chaine de connexion en "dur".

Merci de t'occuper de mon probleme :

Voici :
public GenericTransaction(IDbConnection cnx)

{

cache = new Hashtable();

cnx.Open();

tx = cnx.BeginTransaction();

}

public GenericTransaction() : this(new
SqlConnection("Provider=CONNXOLEDB.1;Persist Security Infoúlse;User
ID=;Data
Source=C:CONNX32UTILSCONNX.cdd;Location=;Mode=Read/Write;Extended
Properties="))

{

}

Plus directe et plus simple , on peut pas faire

Francois




Avatar
François Müller
"Patrice" a écrit dans le message de news:
Ok, tu utilises les classes présentes dans SqlClient qui sont spécifiques
à
SQL SERVER et pour lesquels le provider n'a pas de sens (vu que c'est
forcément SQL Server).



J'ai honte de ne pas avoir trouve cela tout seul. Mais vraiment je suis
oblige de decouvrir a vitesse grand V .NET en qq jours et j'ai fait des
impasses

Donc, quel reference dois je utilser en lieu et place de "System.Data"
puisque l'objet System.Data ne semble faire ref. qu'a Sql Server - IL y a
bien un System.Data.OracleClient, mais je ne trouve pas le composant
generique dans la liste
A la place des classes Sql... utilises les classes OleDb... et cela
devrait
coller. Les classes OleDb permettent de se connecter à une source OleDb
quelconque et nécessitent donc de connaître le fournisseur...



Ben je n'utilise pas Sql* mais la reference standard System.Data

Francois
Avatar
Syl
Sans rapport direct avec votre question, mais avec un petit lien tout de
même puisque vous utilisez PostGreSql sous Linux, je me demandais si vous
aviez envisagé d'utiliser Mono pour créer votre site en ASP.Net ? Il me
semble bien que le portage du framework .net est "complet" pour ce qui est
de l'ASP.net ! Avez-vous envisagé cette solution ? Si oui, pourquoi ne
l'avez-vous pas retenue ?

--> http://www.mono-project.com/about/index.html pour mono en général
--> http://www.go-mono.com/asp-net.html pour ASP.Net
--> http://www.go-mono.com/postgresql.html pour un provider PostGreSql
(gratuit)

Cordialement


"François Müller" a écrit dans le message de
news:
Bonjour

Je me trouve avec un petit soucis : je ne peux pas etablir de connection a
ma base de donnee via mon appli aspnet.(appli en C#)

- J'utilise une base de donnees PostGreSql (sous Linux RedHat)

- J'ai un composant de connection OLE DB tiers partie fournit par ConnX.


Ce
composant fonctionne correctement pour connecter les base PostGreSql en
dehors de l'environnement ASPNET.

- Neanmoins, l'utilisation de ce composant suppose de preciser le Provider
dans la chaine de connexion a la database
(Provider=CONNXOLEDB.1)

- Or, AspNet (ou dotnet ?)ne supporte plus qu'on précise le Provider dans


la
chaîne de connexion (pourquoi ? en OleDB a l;'époque héroïque de VB6


c'était
accepte ?

- Donc comment définir le provider OLEDB qu'on utilise sur une appli
Aspnet/DotNet

Précision : je ne travaille avec dotnet et aspnet que depuis une dizaine


de
jour, donc désolé si il suffisait de RTFM mais dans ce cas m'indiquer le


FM
à lire ;-))

Merci par avance

F:






Avatar
François Müller
"Syl" a écrit dans le message de news:
41484f6e$0$20462$
Sans rapport direct avec votre question, mais avec un petit lien tout de
même puisque vous utilisez PostGreSql sous Linux, je me demandais si vous
aviez envisagé d'utiliser Mono pour créer votre site en ASP.Net ? Il me
semble bien que le portage du framework .net est "complet" pour ce qui est
de l'ASP.net ! Avez-vous envisagé cette solution ? Si oui, pourquoi ne
l'avez-vous pas retenue ?



Non, je ne l'ai pas envisage, car je n'en avais jamais entendu parler
Je vais jeter un coup d'oeil


--> http://www.mono-project.com/about/index.html pour mono en général
--> http://www.go-mono.com/asp-net.html pour ASP.Net
--> http://www.go-mono.com/postgresql.html pour un provider PostGreSql



Merci

F.
Avatar
Patrice
A priori System.Data devrait suffire et fournit les deux.

Le type System.Data.OleDb.OleDbConnection est il connu ?

Si oui, utiliser "imports" ou "using" pour "importer" le namespace et éviter
de taper le nom complet...

Patrice
--

"François Müller" a écrit dans le message de
news:

"Patrice" a écrit dans le message de news:
> Ok, tu utilises les classes présentes dans SqlClient qui sont


spécifiques
> à
> SQL SERVER et pour lesquels le provider n'a pas de sens (vu que c'est
> forcément SQL Server).

J'ai honte de ne pas avoir trouve cela tout seul. Mais vraiment je suis
oblige de decouvrir a vitesse grand V .NET en qq jours et j'ai fait des
impasses

Donc, quel reference dois je utilser en lieu et place de "System.Data"
puisque l'objet System.Data ne semble faire ref. qu'a Sql Server - IL y a
bien un System.Data.OracleClient, mais je ne trouve pas le composant
generique dans la liste
> A la place des classes Sql... utilises les classes OleDb... et cela
> devrait
> coller. Les classes OleDb permettent de se connecter à une source OleDb
> quelconque et nécessitent donc de connaître le fournisseur...

Ben je n'utilise pas Sql* mais la reference standard System.Data

Francois