8

Nếu tôi có chuỗi kết nối được xác định trong tệp web.config của mình, làm cách nào để tạo kết nối tới db SQL từ Mã C# (xin lỗi quên chỉ định) và sau đó gọi thủ tục lưu trữ. Sau đó tôi muốn sử dụng dữ liệu này theo cách nào đó như là DataSource của tôi cho GridView.Gọi thủ tục lưu sẵn với asp.net

Sau đây là cách các chuỗi kết nối được định nghĩa trong web.config:

<connectionStrings> 
<add name="db.Name" connectionString="Data Source=db;Initial Catalog=dbCat;User ID=userId;Password=userPass;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Máy chủ db là một máy chủ Microsoft SQL.

Đây là những gì tôi đang tìm kiếm:

ConnectionStringSettings conSet = ConfigurationManager.ConnectionStrings["db.Name"]; 
SqlConnection con = new SqlConnection(conSet.ConnectionString); 

Mã để lấy dữ liệu là khá tầm thường. Tôi đã quan tâm nhiều hơn trong việc truy cập nó từ một biến connectionString trong tệp web.config.

+0

Loại cơ sở dữ liệu nào? – N0Alias

+1

Bạn đang sử dụng vb.net hoặc C#? (Chỉ để giúp bạn với cú pháp). – JonH

Trả lời

6

Nếu đó là một tập tin tài nguyên như vậy :

private static readonly string connString = Resource1.connString;

Trường hợp connString là tên khóa. Nếu nó là một tập tin web.config

Something như vậy:

private static readonly string connString = System.Configuration.ConfigurationManager.AppSettings["strConn"]; nơi conn được định nghĩa trong tập tin cấu hình web của bạn.

<add key="strConn" value="User ID=test;Password=test;Initial Catalog=TestDB;Data Source=NameOfServer;"/> 

Sau đó gọi sproc:

//connString = the string of our database app found in the resource file 
       using (SqlConnection con = new SqlConnection(connString)) 
       { 
        using (SqlCommand cmd = new SqlCommand("EMPDLL_selClientByClientID", con)) 
        { 
         cmd.CommandType = CommandType.StoredProcedure; 
         cmd.Parameters.Add("@ClientID", SqlDbType.VarChar).Value = cID; 
         con.Open(); 

         using (SqlDataReader reader = cmd.ExecuteReader()) 
         { 
          if (reader.HasRows) 
          { 
           if (reader.Read()) 
           { 
             //more code 
           } 
          } 
         } 
        } 
        } 

Đó là nếu bạn đang mã hóa trong C#, VB.net thỏa thuận cùng của nó chỉ là một chút wordier hơn :), đây là một ví dụ nhỏ:

Public Sub DeleteEmployee(ByVal lVID As Long) 
     Dim conMyData As SqlConnection 
     Dim cmdDelete As SqlCommand 

     Try 
      conMyData = New SqlConnection(connString) 
      cmdDelete = New SqlCommand("delEmployee", conMyData) 

      With cmdDelete 
       .CommandType = CommandType.StoredProcedure 
       'add the parameters 
       .Parameters.Add("@LoginID", SqlDbType.BigInt).Value = lVID 'the request 
       conMyData.Open() 'open a connection 
       .ExecuteNonQuery() 'execute it 
      End With 

     Catch ex As Exception 
      Throw ex 
     Finally 
      cmdDelete = Nothing 
      conMyData.Close() 
      conMyData = Nothing 
     End Try 
    End Sub 

Tất nhiên bạn nên sử dụng câu lệnh using thay vì try/catch/finally để đảm bảo bạn dọn sạch tài nguyên đang được sử dụng.

+0

Tôi không muốn thêm khóa vào web.config của mình (nếu không tôi phải chỉnh sửa nhiều tệp web.config) hoặc nhập nó làm biến tĩnh. Có thể truy cập chuỗi kết nối nếu nó được định nghĩa trong web.config của tôi như trong bài viết của tôi không. – onit

+0

@onit nằm bên trong tệp cấu hình web. – JonH

+0

@onit - nếu bạn chỉ muốn phần cụ thể đó bạn có thể thực hiện '_SQLDBConnString = System.Configuration.ConfigurationManager.ConnectionStrings (1) .ConnectionString() 'và sử dụng thuộc tính ConnectionStrings thay vì phần' appsettings'. – JonH

3

Something như thế này ...

using (var con = new SqlConnection(_connectionString)) 
{ 
    using (var cmd = new SqlCommand(_storedProcedureName, con)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@pMyParamater", myParamaterValue); 
     con.Open(); 

     using (var reader = cmd.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       // do something with the row 
      } 
     } 
    } 
} 

Đây là tất cả các công cụ khá đơn giản phải trung thực, bạn sẽ có thể tìm thấy mọi thứ bạn cần từ những ADO.NET documentation

+1

Ack nếu bạn biết loại tại sao 'var'? – JonH

+0

Tôi nhận ra đây không phải là thứ phức tạp. Tôi chỉ tự hỏi nếu có ai đó có thể chỉ cho tôi đi đúng hướng vì tôi đã bắt đầu lập trình .NET. – onit

+2

@onit Vâng, tôi nhận ra điều đó không có nghĩa là chỉ trích. Nếu bạn chưa quen với điều gì đó, tốt nhất là nên tham gia thói quen đọc tài liệu như là một điểm đầu tiên. Sau đó hỏi một câu hỏi cụ thể hơn về SO nếu bạn vẫn gặp khó khăn. Bạn sẽ tìm hiểu thêm theo cách đó, và bạn sẽ tránh được một số lời khuyên xấu đôi khi được đưa ra trên trang web này. – fearofawhackplanet

Các vấn đề liên quan