2013-03-16 3 views
6

vraiment avoir un temps ennuyeux avec des chaînes de connexion.VB.NET Chaîne de connexion (Web.Config, App.Config)

J'ai deux projets ensemble dans une seule solution. Une application de formulaires Web agissant comme couche de présentation et une bibliothèque de classes la supportant qui enverra et recevra des données d'une base de données.

- La classe des employés au sein de la bibliothèque de classes de projet -

Friend Class Employee 

Public Function GetEmployees() As DataSet 

    Dim DBConnection As New SqlConnection(My_ConnectionString) 
    Dim MyAdapter As New SqlDataAdapter("exec getEmployees", DBConnection) 

    Dim EmployeeInfo As DataSet 
    MyAdapter.Fill(EmployeeInfo, "EmployeeInfo") 

    Return EmployeeInfo 

End Function 

End Class 

Actuellement, l'application me dit qu'il ne peut pas accéder « My_ConnectionString » que j'ai essayé de stocker dans un fichier de configuration pour un accès répété rapide :

<configuration> 

<system.web> 
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
</system.web> 

<connectionStrings> 
    <add name="My_ConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=My_DB;Integrated Security=True;"/> 
</connectionStrings> 

</configuration> 

le web.config fait partie du projet de formulaire Web et non la bibliothèque de classes, sont ces projets incapables de « parler » les uns aux autres? Ai-je besoin d'ajouter un fichier de configuration web/app à la bibliothèque de classes pour stocker une chaîne de connexion dans ce projet?

+0

De votre code, il semble que vous essayez d'utiliser 'My_ConnectionString' pour récupérer la valeur à partir de votre fichier de configuration. Si cela est correct, cela ne fonctionnera pas - vous devez le récupérer dans le fichier de configuration d'une manière similaire à @G. La réponse de Stoynev ci-dessous. – Tim

+0

cela pourrait être utile http://www.connectionstrings.com/ – ajt

Répondre

14

ne sait pas où My_ConnectionString est en provenance de votre exemple, mais essayez cette

System.Configuration.ConfigurationManager.ConnectionStrings("My_ConnectionString").ConnectionString

comme celui-ci

Dim DBConnection As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("My_ConnectionString").ConnectionString) 
+2

Vous pouvez également ajouter une référence à 'System.Configuration', importer avec' Les importations System.Configuration' et alors l'accès avec les 'ConfigurationManager.ConnectionStrings plus courtes ("My_ConnectionString"). ConnectionString'. – Tim

+3

Je suggère également d'utiliser un bloc 'using' pour assurer la connexion est éliminée correctement. – Tim

+0

'ConfigurationManager' n'est pas membre de 'Configuration' J'ai l'impression d'avoir fait une erreur quelque part ... – Corgalas

4

Si c'est une base de données .mdf et la chaîne de connexion a été enregistrée lorsqu'elle a été créé, vous devriez être en mesure d'y accéder via:

Dim cn As SqlConnection = New SqlConnection(My.Settings.DatabaseNameConnectionString) 

espoir qui aide quelqu'un.

0
Public Function connectDB() As OleDbConnection 

     Dim Con As New OleDbConnection 
     'Con.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=" & DBNAME & ";Data Source=" & DBSERVER & ";Pwd=" & DBPWD & "" 
     Con.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBNAME;Data Source=DBSERVER-TOSH;User ID=Sa;Pwd= & DBPWD" 
     Try 
      Con.Open() 
     Catch ex As Exception 
      showMessage(ex) 
     End Try 
     Return Con 
    End Function 
+0

Pourriez-vous ajouter quelques explications à votre code? Merci! – cramopy

0

Connexion à AppConfig

<connectionStrings> 
    <add name="ConnectionString" connectionString="Data Source=192.168.1.25;Initial Catalog=Login;Persist Security Info=True;User ID=sa;Password=example.com" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Dans Class.Cs

public string ConnectionString 
{ 
    get 
    { 
     return System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
    } 
} 
Questions connexes