2012-03-03 106 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