ฉันพบว่าสิ่งนี้ยากมากที่จะได้รับคำตอบ แต่ในที่สุดก็คิดออก ดังนั้นฉันจะเขียนขั้นตอนด้านล่างนี้
ก่อนที่คุณจะตั้งค่าสตริงการเชื่อมต่อในรหัสตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงฐานข้อมูลของคุณได้จริง เริ่มต้นอย่างชัดเจนด้วยการเข้าสู่เซิร์ฟเวอร์ฐานข้อมูลโดยใช้ SSMS (Sql Server Management Studio หรือเทียบเท่าในฐานข้อมูลอื่น) ในเครื่องเพื่อให้แน่ใจว่าคุณสามารถเข้าถึงโดยใช้รายละเอียดใด ๆ ที่คุณต้องการใช้
ถัดไป (หากจำเป็น) หากคุณกำลังพยายามเข้าถึงฐานข้อมูลบนเซิร์ฟเวอร์ที่แยกต่างหากให้แน่ใจว่าคุณสามารถทำได้เช่นเดียวกันใน SSMS ดังนั้นให้ตั้งค่า SSMS บนคอมพิวเตอร์และตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงเซิร์ฟเวอร์ด้วยชื่อผู้ใช้และรหัสผ่านไปยังเซิร์ฟเวอร์ฐานข้อมูลนั้น
หากคุณไม่ได้รับสิทธิ์ 2 ข้อข้างต้นคุณก็เสียเวลาไปเปล่า ๆ เพราะไม่สามารถเข้าถึงฐานข้อมูลได้ อาจเป็นเพราะผู้ใช้ที่คุณตั้งค่าผิดไม่ได้เปิดใช้งานการเข้าถึงระยะไกล (หากจำเป็น) หรือไม่ได้เปิดพอร์ต (หากจำเป็น) ด้วยเหตุผลอื่น ๆ อีกมากมาย แต่เป็นสาเหตุที่พบบ่อยที่สุด
เมื่อคุณตรวจสอบแล้วว่าคุณสามารถเข้าถึงฐานข้อมูลโดยใช้ SSMS ขั้นตอนต่อไปเพียงเพื่อให้กระบวนการเป็นไปโดยอัตโนมัติและหลีกเลี่ยงข้อผิดพลาดคือการปล่อยให้ระบบทำงานแทนคุณ
- เริ่มโปรเจ็กต์ที่ว่างเปล่าเพิ่ม 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 ดังนั้นฉันแน่ใจว่าต้องมีวิธีที่ดีกว่านี้ในการทำโค้ดนี้ ฉันจะแสดงความคิดเห็นเกี่ยวกับวิธีปรับปรุงขั้นตอนเหล่านี้หากเป็นไปได้ ฉันมองหาอะไรทำนองนี้หมดแล้ว แต่ในที่สุดฉันก็คิดออกหลังจากทำงานหนักมาหลายสัปดาห์ มองตัวเองยังคิดว่าต้องมีวิธีที่ง่ายกว่านี้
ฉันหวังว่านี้จะเป็นประโยชน์.