การตั้งค่าสตริงการเชื่อมต่อใน ASP.NET เป็น SQL SERVER


96

ฉันกำลังพยายามตั้งค่าสตริงการเชื่อมต่อในไฟล์ web.config ของฉัน (Visual Studio 2008 / ASP.NET 3.5) ไปยังเซิร์ฟเวอร์ภายใน (SQL Server 2008)

ใน web.config ของฉันฉันจะวางสตริงการเชื่อมต่อได้อย่างไรและที่ไหน?

นี่คือลักษณะของไฟล์ web.config ในตอนนี้: http://imwired.net/aspnet/Online_web.config

คำตอบ:


149

คุณยังสามารถใช้สิ่งนี้ได้ซึ่งง่ายกว่า สิ่งเดียวที่คุณต้องตั้งคือ "YourDataBaseName"

  <connectionStrings>
    <add name="ConnStringDb1" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>

ตำแหน่งที่จะวางสตริงการเชื่อมต่อ

<?xml version='1.0' encoding='utf-8'?>  
  <configuration>  
    <connectionStrings>  
      <clear />  
      <add name="Name"   
       providerName="System.Data.ProviderName"   
       connectionString="Valid Connection String;" />  
    </connectionStrings>  
  </configuration>  

วิธีใช้ในรหัส C # ของฉันด้านหลังเมื่อฉันต้องการดำเนินการค้นหา
Nikhil Tamhankar

1
คุณสามารถดูข้อมูลรายละเอียดเกี่ยวกับสตริงการเชื่อมต่อในดอทเน็ตได้จาก: connectionstrings.com/sql-server-2008
Vimal bhatt

4
ฉันสงสัยว่ามีกี่คนที่คัดลอกและวางบรรทัดนั้น ... :-) ฉันคิดว่านี่เป็นครั้งที่ 30 แล้วที่ฉันเคยถามคำถามนี้ .... บางทีฉันควรจะเรียนรู้ด้วยใจ
Ayo Adesina

เวอร์ชันนี้ไม่มีแอตทริบิวต์ชื่อผู้ใช้ / รหัสผ่าน
Burgi

@Burgi ไม่มีมันไม่ได้หายไป (ดูIntegrated Security=True?) ไม่จำเป็นเพราะฐานข้อมูลอ่านไฟล์ตามสิทธิ์ - ลองดู นี่คือเหตุผลที่ฉันบอกว่าง่ายกว่าเพราะคุณไม่จำเป็นต้องเพิ่ม หากคุณไม่สามารถใช้งานได้ให้เปิดฐานข้อมูลของคุณและตั้งค่าการอนุญาตที่ถูกต้องบนฐานข้อมูลและบนไฟล์
Aristos

107

ด้วยเหตุผลบางอย่างฉันไม่เห็นคำตอบง่ายๆที่นี่

วางไว้ที่ด้านบนสุดของรหัสของคุณ:

using System.Web.Configuration;
using System.Data.SqlClient; 

ใส่สิ่งนี้ใน Web.Config:

<connectionStrings >
    <add
         name="myConnectionString" 
         connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;"
         providerName="System.Data.SqlClient"/>
</connectionStrings>

และตำแหน่งที่คุณต้องการตั้งค่าตัวแปรการเชื่อมต่อ:

SqlConnection con = new SqlConnection(
    WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

5
WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionStringอาจจะถูกต้องกว่าในทางเทคนิค
ขยี้

2
ฉันยังต้องการ:using System.Data.SqlClient;
nu everest

22

ฉันพบว่าสิ่งนี้ยากมากที่จะได้รับคำตอบ แต่ในที่สุดก็คิดออก ดังนั้นฉันจะเขียนขั้นตอนด้านล่างนี้

  1. ก่อนที่คุณจะตั้งค่าสตริงการเชื่อมต่อในรหัสตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงฐานข้อมูลของคุณได้จริง เริ่มต้นอย่างชัดเจนด้วยการเข้าสู่เซิร์ฟเวอร์ฐานข้อมูลโดยใช้ SSMS (Sql Server Management Studio หรือเทียบเท่าในฐานข้อมูลอื่น) ในเครื่องเพื่อให้แน่ใจว่าคุณสามารถเข้าถึงโดยใช้รายละเอียดใด ๆ ที่คุณต้องการใช้

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

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

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

  1. เริ่มโปรเจ็กต์ที่ว่างเปล่าเพิ่ม Linq ที่คุณเลือกลงใน SQL หรือ Dataset (EF ดี แต่สตริงการเชื่อมต่อถูกฝังอยู่ในสตริง EF con ฉันต้องการอันที่สะอาด) และเชื่อมต่อกับฐานข้อมูลของคุณโดยใช้รายละเอียดที่ตรวจสอบด้านบนใน wizzard สาย con เพิ่มตารางใดก็ได้และบันทึกไฟล์

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


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

สมมติว่าขั้นตอนข้างต้นเริ่มต้นคุณด้วยสิ่งต่อไปนี้เป็นสตริงการเชื่อมต่อของคุณในโค้ดด้านหลัง:

string conString = "Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;";

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

เมื่อคุณแน่ใจว่าสไตล์ข้างต้นใช้งานได้แล้วก็ถึงเวลาทำตามขั้นตอนต่อไป:

1. ส่งออกสตริงลิเทอรัลของคุณ (สิ่งที่อยู่ในเครื่องหมายคำพูดรวมถึงเครื่องหมายคำพูด) ไปยังส่วนต่อไปนี้ของไฟล์ web.config (สำหรับสตริงการเชื่อมต่อหลายสายให้ทำหลายบรรทัด:

<configuration>
    <connectionStrings>
        <add name="conString" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
        <add name="conString2" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
        <add name="conString3" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

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


2. ตอนนี้เพิ่มบรรทัดของโค้ดต่อไปนี้ในโค้ด C # ด้านหลังโดยเฉพาะอย่างยิ่งภายใต้นิยามคลาส (เช่นไม่อยู่ในเมธอด) จุดนี้ชี้ไปที่โฟลเดอร์รูทของโปรเจ็กต์ของคุณ โดยพื้นฐานแล้วมันคือชื่อโครงการ โดยปกติจะเป็นตำแหน่งของไฟล์ web.config (ในกรณีนี้โครงการของฉันเรียกว่า MyProject

static Configuration rootWebConfig = WebConfigurationManager.OpenWebConfiguration("/MyProject");

3. ตอนนี้เพิ่มบรรทัดของรหัสต่อไปนี้ในรหัส C # ด้านหลัง สิ่งนี้จะตั้งค่าคงที่ของสตริงที่คุณสามารถอ้างอิงได้ในหลาย ๆ ที่ตลอดทั้งโค้ดของคุณหากคุณต้องการ conString ในวิธีการต่างๆ

const string CONSTRINGNAME = "conString";

4. จากนั้นเพิ่มบรรทัดของโค้ดต่อไปนี้ในโค้ด C # ที่อยู่ด้านหลัง สิ่งนี้ได้รับสตริงการเชื่อมต่อจากไฟล์ web.config ที่มีชื่อ conString (จากค่าคงที่ด้านบน)

ConnectionStringSettings conString = rootWebConfig.ConnectionStrings.ConnectionStrings[CONSTRINGNAME];

5. สุดท้ายคุณจะมีบางอย่างที่คล้ายกับบรรทัดของโค้ดนี้:

SqlConnection con = new SqlConnection(conString)

คุณจะแทนที่ด้วยรหัสบรรทัดนี้:

SqlConnection con = new SqlConnection(conString.ConnectionString)

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

ฉันยังใหม่กับ C #, ASP.Net และ Sql Server ดังนั้นฉันแน่ใจว่าต้องมีวิธีที่ดีกว่านี้ในการทำโค้ดนี้ ฉันจะแสดงความคิดเห็นเกี่ยวกับวิธีปรับปรุงขั้นตอนเหล่านี้หากเป็นไปได้ ฉันมองหาอะไรทำนองนี้หมดแล้ว แต่ในที่สุดฉันก็คิดออกหลังจากทำงานหนักมาหลายสัปดาห์ มองตัวเองยังคิดว่าต้องมีวิธีที่ง่ายกว่านี้

ฉันหวังว่านี้จะเป็นประโยชน์.


14

ควรอยู่ใน<configuration>โหนด:

  <connectionStrings >
    <add name="myconnectionstring" connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

ไซต์นี้มีข้อมูลเพิ่มเติม:


1
วิธีใช้ในรหัส C # ของฉันด้านหลังเมื่อฉันต้องการดำเนินการค้นหาใน asp.net 4
Nikhil Tamhankar

7

การเชื่อมต่อใน WebConfig

เพิ่มสตริงการเชื่อมต่อของคุณไปยัง<connectionStrings>องค์ประกอบในWeb.configไฟล์

<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>

ใน Class.Cs

public static string ConnectionString{
get{
return ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;}
set{}

6

ในส่วนหัว

using System.Configuration;

ในรหัส

SqlConnection conn = new SqlConnection(*ConfigurationManager.ConnectionStrings["connstrname"].ConnectionString*);

3

คุณยังสามารถใช้ไฟล์คอนฟิกูเรชันภายนอกเพื่อระบุส่วนสตริงการเชื่อมต่อและอ้างถึงไฟล์นั้นในไฟล์คอนฟิกูเรชันของแอ็พพลิเคชันเช่นใน web.config

เช่นเดียวกับweb.configไฟล์ใน:

<configuration>  
    <connectionStrings configSource="connections.config"/>  
</configuration>  

การกำหนดค่าภายนอก connections.configไฟล์จะมีส่วนการเชื่อมต่อ

<connectionStrings>  
  <add name="Name"   
   providerName="System.Data.ProviderName"   
   connectionString="Valid Connection String;" />  

</connectionStrings>  

การแก้ไขเนื้อหาของไฟล์คอนฟิกูเรชันภายนอกจะไม่รีสตาร์ทแอปพลิเคชัน (ตามที่ ASP.net ทำตามค่าเริ่มต้นพร้อมกับการเปลี่ยนแปลงใด ๆ ในไฟล์คอนฟิกูเรชันของแอปพลิเคชัน)


2

หากคุณต้องการเขียนสตริงการเชื่อมต่อใน Web.config ให้เขียนภายใต้การต่อยที่กำหนด

<connectionStrings>
  <add name="Conn" 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>

หรือ

คุณอยู่ในไฟล์ aspx.cs เช่น

SqlConnection conn = new SqlConnection("Data Source=12.16.1.25;Initial Catalog=Login;Persist Security Info=True;User ID=sa;Password=example.com");

2

คุณสามารถใส่สิ่งนี้ในweb.configไฟล์ของคุณconnectionStrings:

<add name="myConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;" providerName="System.Data.SqlClient"/>

2

คุณสามารถใช้รูปแบบต่อไปนี้:

  <connectionStrings>
    <add name="ConStringBDName" connectionString="Data Source=serverpath;Initial Catalog=YourDataBaseName;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>

ส่วนใหญ่คุณจะใช้นิ้วแท็ก connectionstring ใน web.config หลังจากนั้น <appSettings>

ลองใช้สิ่งนี้


1

คุณสามารถลองสิ่งนี้ มันง่ายมาก

<connectionStrings>         
    <add name="conString" connectionString="Data Source=SQLServerAddress;Initial Catalog=YourDatabaseName; User Id=SQLServerLoginId; Password=SQLServerPassword"/>
</connectionStrings>

OP ถามว่า "อยู่ที่ไหนใน web.config"
Steve Smith

0

ลองใช้สิ่งนี้สำหรับสตริงการเชื่อมต่อของคุณ

 Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
 User ID=myDomain\myUsername;Password=myPassword;

ยินดีต้อนรับสู่ Stack Overflow! เมื่อคุณโพสต์คำตอบสำหรับคำถามเก่าคุณควรเพิ่มบริบทบางส่วนว่าทำไมคำตอบของคุณจึงดีกว่าคำถามเก่า มิฉะนั้นจะเสี่ยงต่อการถูกมองข้ามที่ด้านล่างของรายการคำตอบ
Monolo

0

ฉันเพิ่งพบ !! คุณจะต้องใส่นี้สตริงการเชื่อมต่อและจุดโดยตรงกับคุณฐานข้อมูล กรณีเดียวกันบนเซิร์ฟเวอร์

"Provider=Microsoft.ACE.OLEDB.12.0; 
 Data Source=c:/inetpub/wwwroot/TEST/data/data.mdb;"

มันได้ผล!! :)


0

จัดเก็บสตริงการเชื่อมต่อใน web.config

เป็นแนวทางปฏิบัติที่ดีในการจัดเก็บสตริงการเชื่อมต่อสำหรับแอปพลิเคชันของคุณในไฟล์กำหนดค่าแทนที่จะเป็นสตริงแบบฮาร์ดโค้ดในโค้ดของคุณ วิธีการดำเนินการนี้แตกต่างกันระหว่าง. NET 2.0 และ. NET 3.5 (ขึ้นไป) บทความนี้ครอบคลุมทั้ง https://www.connectionstrings.com/store-connection-string-in-webconfig/


-1

สร้างส่วนที่เรียกว่าภายใน<connectionStrings></connectionStrings>ของคุณweb.config<configuration></configuration>จากนั้นเพิ่มสตริงการเชื่อมต่อที่แตกต่างกันตัวอย่างเช่น

<configuration>

  <connectionStrings>
   <add name="ConnectionStringName" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True"/>
  </connectionStrings>

</configuration>

นี่คือรายการรูปแบบสตริงการเชื่อมต่อที่แตกต่างกันทั้งหมดhttps://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx


"สร้างส่วนที่ชื่อ <connectionStrings> </connectionStrings> ใน web.config ของคุณ" - อยู่ที่ไหนใน web.config
Steve Smith

ลูกของแท็ก "การกำหนดค่า" ข้อมูลเพิ่มเติมdocs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/…
Guy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.