2013-01-07 55 views
25

Có lẽ tôi sử dụng các truy vấn trực tiếp để lấy các bản ghi từ một bảng và cũng được lưu trữ thủ tục một số lần. Tôi đề cập đến các loại lệnh như CommandType.StoredProcedure trong khi sử dụng SP. Ngoài ra, tôi thấy một tùy chọn khác có tên CommandType.Tabledirect, đã tìm kiếm một số nơi khác, nhưng không rõ ràng về nó. Bất kỳ ai có thể giúp tôi để có được ý tưởng về nó? Vui lòng cho tôi một số mã mẫu.Mục đích của việc sử dụng CommandType.Tabledirect

Trả lời

33

CommandType chứa tên chỉ định cách chuỗi được diễn giải.

  1. CommandType.Text cho lệnh văn bản SQL. (Mặc định.)
  2. CommandType.StoredProcedure để biết tên của quy trình được lưu trữ.
  3. CommandType.TableDirect cho tên tên của bảng.

Tất cả các hàng và cột của bảng được đặt tên sẽ được trả lại khi bạn gọi một trong các phương pháp Thực thi.

LƯU Ý: BảngDirect chỉ được Nhà cung cấp dữ liệu .NET Framework hỗ trợ cho OLE DB. Truy cập nhiều bảng không được hỗ trợ khi CommandType được đặt thành TableDirect.

dụ mẫu nó như thế nào là được sử dụng:

OleDbConnection myOleDbConnection =new OleDbConnection("provider=sqloledb;server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI"); 
OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand(); 

myOleDbCommand.CommandType = CommandType.TableDirect; 

myOleDbCommand.CommandText = "Employee"; 

myOleDbConnection.Open(); 

OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader(); 

for (int count = 1; count <= 2; count++) 
{ 
    myOleDbDataReader.Read(); 
    Console.WriteLine("myOleDbDataReader[\" ID\"] = " + 
    myOleDbDataReader["ID"]); 
    Console.WriteLine("myOleDbDataReader[\" FirstName\"] = " + 
    myOleDbDataReader["FirstName"]); 
    Console.WriteLine("myOleDbDataReader[\" LastName\"] = " + 
    myOleDbDataReader["LastName"]); 
} 
myOleDbDataReader.Close(); 
myOleDbConnection.Close(); 

Insert/Update

 try 
     { 
      using (SqlCeCommand command = conn.CreateCommand()) 
      { 
       command.CommandText = "Holdings"; 
       command.CommandType = CommandType.TableDirect; 
       using (SqlCeResultSet rs = command.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable)) 
       { 
        SqlCeUpdatableRecord record = rs.CreateRecord(); 
        foreach (var r in _commitBatch) 
        { 
         int index=0; 
         record.SetValue(index++, r.TryGetValueOrDefault("IdentifierFromImportSource",string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("SecurityID", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("SecurityName", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("SecurityType", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("AllocationAmount", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("Position", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("AnnualFeePercent", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("MarginAmount", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("Price", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("MorningstarSecId", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("MorningstarSecType", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("UserID", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("MorningstarPrice", string.Empty)); 
         record.SetValue(index++, string.Empty); 
         record.SetValue(index++, r.TryGetValueOrDefault("AnnualFeeFrequency", string.Empty)); 
         record.SetValue(index++, r.TryGetValueOrDefault("TrackingMethod", "1")); 
         rs.Insert(record); 
        } 
       } 

      } 

     } 
     catch (Exception e) 
     { 
      NotifyError(this, new ImportErrorEventArgs(e.Message + e.StackTrace, ErrorLevel.Application)); 
     } 
+0

Có thể, để thực hiện Update/Insert/Xóa hành động qua TableDirect.if có, có thể bạn cũng có bài mã của nó. –

+0

Tôi vừa cập nhật câu trả lời của mình .. @ faheemkhan –

+0

Cảm ơn, tôi sẽ xem lại. –

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