2011-07-06 34 views
2

我有一個C#/ ASP.net項目包含了一個我開發的數據庫,其中包含一個很好用的方便使用的視圖。在C#和Asp.net中使用SQL Server 2008中的視圖

我有SQL連接設置到我創建的SQL Server 2008數據庫。它似乎好像連接好,但我不明白如何實際使用我創建的視圖,而無需將查詢硬編碼到程序中(有人告訴我這是不好的?)。

這是我的連接我設置:

SqlConnection conn = null; 
    conn = new SqlConnection("Data Source=raven\\sqlexpress;Initial Catalog=ucs;Integrated Security=True;Pooling=False"); 
    conn.Open(); 
    SqlCommand command = new SqlCommand(query, conn); 

基本上,我需要一些代碼使用此視圖來查詢。我可以看到視圖並查看將會獲得的結果,但不能在程序中訪問它! 該視圖被命名爲「UserView」。非常感謝幫助!

回答

11

你可以使用類似下面的東西。但將硬編碼的SQL命令放入.Net代碼通常被認爲是邪惡的。相反,使用存儲過程更好更安全。

這應該讓你開始。你可以修改它通過

  1. 使用存儲過程改變command.CommandType以表明它是一個存儲過程調用
  2. 並添加適當的參數的命令,你的SP的需求。
  3. command.CommandText更改爲您的SP的名稱,因此刪除了硬編碼的SQL,即 。

示例代碼如下:

using (SqlConnection connection = new SqlConnection("Data Source=raven\\sqlexpress;Initial Catalog=ucs;Integrated Security=True;Pooling=False")) 
{ 
    using (SqlCommand command = connection.CreateCommand()) 
    { 
     command.CommandText = "SELECT * from your_view WHERE your_where_clause"; 

     connection.Open(); 
     using (SqlDataReader reader = command.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       // process result 
       reader.GetInt32(0); // get first column from view, assume it's a 32-bit int 
       reader.GetString(1); // get second column from view, assume it's a string 
       // etc. 
      } 
     } 
    } 
} 
+0

downvote removed –

+0

謝謝!這看起來不錯,沒有意識到我可以直接從視圖中選擇。 但是,有沒有我應該用來允許我使用ResultSet和ExecuteQuery的程序集引用?兩者都未知。我已經添加了「使用System.Data.SqlClient」,還有什麼我失蹤? – ImGreg

+0

@Greg - 我認爲ResultSet來自之前的編輯,因爲我將其更改爲使用SqlDataReader。上面的代碼不是爲你編譯的嗎?我相信System.Data程序集應該爲你解析這些類。 – dcp

-1

使用VS2013添加一個新的DataSet到您的項目。將視圖從服務器資源管理器拖到DataSet設計圖面。

+0

請提供更詳細的答案。 – Banana

+0

這個答案是非常懶惰的。從文件菜單,工具菜單或編寫特定的代碼行,如何精確地添加新的DataSet?如果你會提供一半的真理,而不是回答。 – Sizons