อ่านสตริงการเชื่อมต่อจาก web.config


253

ฉันจะอ่านสตริงการเชื่อมต่อจากweb.configไฟล์ไปยังคลาสพับลิกที่อยู่ในไลบรารีคลาสได้อย่างไร?

ฉันพยายามแล้ว:

WebConfigurationManager

ConfigurationManager

แต่คลาสเหล่านี้ไม่ได้รับการยอมรับในไลบรารีคลาสของฉัน

คำตอบ:


177

เพิ่มSystem.Configurationเป็นข้อมูลอ้างอิง

ด้วยเหตุผลที่แปลกประหลาดบางอย่างมันไม่รวมอยู่ในค่าเริ่มต้น



66

ค#

// Add a using directive at the top of your code file    
using System.Configuration;

// Within the code body set your variable    
string cs = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

VB

' Add an Imports statement at the top of your code file    
Imports System.Configuration

' Within the code body set your variable    
Dim cs as String = ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString

3
"เพิ่มการอ้างอิงที่ด้านบนของไฟล์รหัสของคุณ" => นั่นเป็นการใช้คำสั่งไม่ใช่การอ้างอิง!
Mishax

25

เพิ่มSystem.Configurationเป็นข้อมูลอ้างอิงแล้ว:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;

19

ฉันเดาว่าคุณต้องเพิ่มการอ้างอิงไปยังแอสเซมบลีSystem.Configurationถ้ายังไม่ได้เพิ่ม

นอกจากนี้คุณอาจต้องแทรกบรรทัดต่อไปนี้ที่ด้านบนของไฟล์รหัสของคุณ:

using System.Configuration;

ผิดปกติ, มันควรจะใช้ System.Configuration;
Nick Binnet

14

ในVB: สิ่งนี้ควรใช้งานได้

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

ในC#มันจะเป็น (ตามความคิดเห็นของ Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString

วงเล็บเหล่านั้นจะต้องเป็นวงเล็บ
Charles Burns

1
@ CharlesBurns ขอบคุณฉันเขียนใน VB โดยไม่ได้ตั้งใจใน C # แน่ใจว่ามันควรจะเป็น ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa

อ่าฉันไม่รู้ด้วยซ้ำว่าเป็น VB ฉันคิดว่ามันเป็นตัวพิมพ์ผิด ในทางที่ผิดของฉันด้วย
Charles Burns

13
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;  

ค#

string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constring))

ด้านล่าง WEB.CONFIG รหัสไฟล์

<connectionStrings>
    <add name="ABCD" connectionString="Data Source=DESKTOP-SU3NKUU\MSSQLSERVER2016;Initial Catalog=TESTKISWRMIP;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

ในรหัสข้างต้น ABCD คือชื่อการเชื่อมต่อ


เพิ่มเติม:นอกเหนือจากตัวทำดัชนีที่ยอมรับชื่อของสตริงการเชื่อมต่อมันยังได้รับอนุญาตให้ใช้ดัชนีจำนวนเต็ม - ซึ่งมีประโยชน์หากคุณต้องการอ่านสตริงการเชื่อมต่อทั้งหมดในforลูป ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) และทำให้เลือกได้ในคอมโบ ด้วยvar numOfConnections = ConfigurationManager.ConnectionStrings.Count;คุณสามารถกำหนดจำนวนสายเชื่อมต่อที่มีอยู่ ในตัวอย่างconn.Nameนี้มีชื่อของการเชื่อมต่อ
Matt

11

คุณต้องเรียกใช้คลาสนี้ที่ด้านบนของหน้าหรือคลาสของคุณ:

using System.Configuration;

จากนั้นคุณสามารถใช้วิธีนี้ที่ส่งคืนสตริงการเชื่อมต่อให้พร้อมที่จะส่งผ่านไปยังวัตถุ sqlconnection เพื่อทำงานต่อไปของคุณดังนี้:

    private string ReturnConnectionString()
    {
       // Put the name the Sqlconnection from WebConfig..
        return ConfigurationManager.ConnectionStrings["DBWebConfigString"].ConnectionString;
    }

เพียงเพื่อให้ความกระจ่างชัดเจนนี่คือค่าในเว็บ Config:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>

ในโครงการเว็บจะดีกว่าที่จะใช้ WebConfigurationManager ใน System.Web.Configuration
BJladu4


4
using System.Configuration;


string connString = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();

จำไว้ว่าอย่าใช้ ConnectionStrings [ดัชนี] เพราะคุณอาจกำหนดค่าเครื่องและพกพาได้ทั่วโลก



1

ดูเหมือนว่าทุกคนจะแนะนำให้เพิ่ม

using System.Configuration;

อันไหนจริง.

แต่ฉันขอแนะนำให้คุณคิดถึงการติดตั้งส่วนขยาย Visual Studio ของ ReSharper หรือไม่

เมื่อติดตั้งแล้วแทนที่จะเห็นข้อผิดพลาดที่ไม่ได้กำหนดคลาสคุณจะเห็นพรอมต์ที่แจ้งให้คุณทราบว่ามีแอสเซมบลีใดอยู่ในนั้นโดยถามคุณว่าคุณต้องการให้เพิ่มคำสั่งที่จำเป็นโดยใช้หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.