Muốn làm 1 form chọn databases theo server name thì nên làm thế nào?

Như trong cái form Add Connection trong visual ấy. Chọn Server name rồi xuống dưới chọn database

Đầu tiên bạn phải tìm các instance của SQL Server đang chạy trên network hoặc trên máy của bạn bằng cách dùng lớp SqlDataSourceEnumerator từ thư viện System.Data.Sql. Bạn có thể tham khảo ở đây:

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/enumerating-instances-of-sql-server

Sau khi đã có được instance name, bạn tạo ra connection string và query table sys.databases để lấy danh sách các database trong instance đó. Bạn có thể tham khảo ví dụ ở đây:

Lưu ý là các ví dụ chỉ mang tính tham khảo, vì thế bạn phải sửa một chút để chạy đúng theo yêu cầu của bạn. Đừng copy and paste mà không hiểu gì hết nhé.

Chút bạn thành công.

Chỗ tạo connection string và query table sys,databases mình chưa hiểu lắm. Làm cách nào để tạo connection string đúng theo instance name mình đã chọn được thế?

Bạn nhấn vào Test connection để kiểm tra việc kết nối đến DB. Tiếp theo bạn nhấn Advanced, hiện ra dialog và phía dưới là chuỗi kết nối.

Làm thế chỉ lấy đc connection string của máy mình à. Còn nếu muốn tạo connection string theo instance name đã lấy đc ở trên thì phải làm thế nào?

Bạn xem định dạng của connection string rồi thay thế instance của bạn vào.

Có cách nào tạo connection string dựa theo lựa chọn của combobox không? Mình muốn khi đã lấy được danh sách các instance name và đưa vào combobox1 thì khi chọn instance name ở combobox1 đó thì sẽ tự động tạo 1 connection string dựa theo instance name đã chọn.

Connection string là khai báo có các thông tin cần thiết để một ứng dụng hay mã nguồn có thể dùng để kết nối vào CSDL của bạn. Bạn có thể xem một số connection string mẫu tại đây:

https://www.connectionstrings.com/sql-server/

Còn về câu hỏi cuối cùng của bạn, tôi thấy hơi khó hiểu. Mục đích của bạn là viết mã để tạo ứng dụng phải không? Nếu thế thì không có gì là tự động cả, “tự động” là đối với người sử dụng, còn đối với mã thì bạn phải lập trình mọi thứ. Nếu bạn đã có địa chỉ IP của server, instance name từ combobox (và có thể là user name và password nếu CSDL của bạn không dùng trusted connection) thì bạn chỉ lấy các giá trị này từ các đối tượng này rồi ghép thành connection string và sử dụng trong mã của bạn. Không có gì là tự động ở đây cả.

2 Likes

Ý mình là thế này:
Đầu tiên mình sẽ tạo 1 combobox1 để lấy danh sách các server name sql có sẵn trong mạng.
Sau đó khi chọn 1 server name bất kỳ thì ở combobox2 sẽ là danh sách databases của server name đó
VD: ở combobox1 mình chọn server name A thì ở combobox2 sẽ là danh sách db của server name A. Chọn server name B thì combobox2 sẽ cho ra danh sách db cửa server name B

Thì vẫn vậy thôi, bạn viết code để xử lý event khi người dùng chọn server name thì sẽ tìm ra danh sách instance. Khi người dùng chọn instance thì lại có một event để tìm ra danh sách các database và tiếp tục như vậy.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?