ฐานข้อมูลสตริงการเชื่อมต่อแบบไดนามิก c #


9

ฉันใช้รหัสบรรทัดนี้สำหรับการเชื่อมต่อเสมอ:

 string ConnectString = "datasource = mysource; username = myusername; password = mypassword; database = mydatabasename";

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

string ConnectString = "datasource = txtmysource.Text; username = txtmyusername.Text; password = txtmypassword.Text; database = txtmydatabasename.Text";

โดยที่ txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text เป็นชื่อของกล่องข้อความใน UI แต่ฉันไม่สามารถหาวิธีเขียนได้

คำตอบ:


28

คุณอาจต้องการDbConnectionStringBuilderโดยเฉพาะอย่างยิ่งสิ่งที่ถูกต้องสำหรับ RDBMS ของคุณด้วย SQL Server:

var builder = new SqlConnectionStringBuilder
{
    UserID = txtmyusername.Text,
    DataSource = txtmysource.Text,
    Password = txtmypassword.Text,
    InitialCatalog = txtmydatabasename.Text,
};
var connectString = builder.ConnectionString;

บิตที่สำคัญที่นี่คือมันจะใช้ตัวละครที่ถูกต้องหลบหนี ฯลฯ หาก (เช่น) องค์ประกอบใด ๆ ที่มีตัวละครที่สงวน / ไม่สำคัญเช่นช่องว่างเครื่องหมายจุลภาคเครื่องหมายคำพูด ฯลฯ


2

อาจมีการสอดแทรกสตริงเช่นนี้:

string ConnectString = $"datasource = {txtmysource.Text}; username = {txtmyusername.Text}; password = {txtmypassword.Text}; database = {txtmydatabasename.Text}";

2
ซึ่งใช้ได้จนกระทั่งมีคนสร้างฐานข้อมูลชื่อa;b="c- ซึ่งใช่ได้รับอนุญาต
Marc Gravell

ขอบคุณคงตอนนี้มีทางออกของคุณ
Raouf Bessghaier

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