2012-03-03 103 views
0

我想將一些舊的C#代碼轉換爲WebMatrix訪問數據庫的方式,但我掙扎着。有人可以幫我嗎?將SQL代碼轉換爲Razor格式

private static string connectionString = "Data Source=ASHIT\\SQLEXPRESS;Initial Catalog=amit;Integrated Security=True"; 

    public static List<Item> method(DateTime start, DateTime end) 
    { 

     List<Item> events = new List<Item>(); 
     SqlConnection con = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand("SELECT event_id, description, title, event_start, event_end FROM event where event_start>[email protected] AND event_end<[email protected]", con); 
     cmd.Parameters.AddWithValue("@start", start); 
     cmd.Parameters.AddWithValue("@end", end); 

     using (con) 
     { 
      con.Open(); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       //perform functions 
      } 
     } 
     return events; 
    } 

到目前爲止,我有這麼多,我無法完成過去的「使用」行 - 我應該從哪裏出發?

public static List<Item> method(DateTime start, DateTime end) 
    { 

     List<Item> events = new List<Item>(); 
     var db = Database.Open("plan"); 
     var result = db.Query("SELECT event_id, description, title, event_start, event_end FROM event where event_start>= "+ start + " AND event_end<= "+ @end); 
    //not sure what to do from here 
     using (con) 
     { 
      con.Open(); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       //perform functions 
      } 
     } 
     return events; 
    } 

回答

1

我從來沒有使用WebMatrix中的數據庫傭工,但基於文檔,你應該能夠做一些事情,如:

foreach(var record in result) 
{ 
    // Perform functions 
} 

望着再次的文檔,它看起來像db.Query將返回IEnumerable<Object>,所以上面的代碼將不起作用,除非您將其更改爲(僅限C#4):

IEnumerable<dynamic> result = db.Query("SELECT event_id, description, title, event_start, event_end FROM event where event_start>= "+ start + " AND event_end<= "+ @end); 

根據示例here,這可能不是必需的。

+0

非常感謝,我現在就試試這個代碼 - 非常有幫助! :) – 2012-03-03 00:39:02

+0

很高興我能幫到你。如果有效,請記住將其標記爲答案。 – 2012-03-03 01:26:08