2013-08-07 25 views
0

我在C#中尋找一種方式來UPDATE SQL Server數據庫從code-behindsession parameter,這是怎麼了我的SqlCommand看起來像在ASP:更新SQL數據庫,C#中的會話參數

重要:在C#中的SqlCommand將在static function會是一個問題?

在此先感謝!

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SPMS_DBConnectionString1 %>" 
     UpdateCommand="UPDATE Project SET startDate = @startDate, dueDate = @dueDate, progress = @progress, status = @status WHERE (prID = @prID)"> 
     <UpdateParameters> 
      <asp:SessionParameter Name="prID" SessionField="project" Type="String" /> 
      <asp:Parameter Name="startDate" Type="DateTime"/> 
      <asp:Parameter Name="dueDate" Type="DateTime" /> 
      <asp:Parameter Name="progress" Type="Int32" /> 
      <asp:Parameter Name="status" Type="Boolean" /> 
      <asp:Parameter Name="projectID" Type="Int32" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
+0

'更新命令=「更新項目設置的startDate =' - 這可能使問題 – Marek

+0

有不會與靜態函數的任何問題它將工作很好。 –

回答

0

這是我如何解決它:

string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SPMS_DBConnectionString1"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    using (SqlCommand command = connection.CreateCommand()) 
    { 

     DateTime startDate = DateFromMiliSec(start); 
     DateTime dueDate = DateFromMiliSec(end); 
     int progress = Convert.ToInt32(prog); 
     string prID = HttpContext.Current.Session["project"].ToString();   

     command.CommandText ="UPDATE Project SET startDate = @startDate, dueDate = @dueDate, progress = @progress, status = @status WHERE (prID = @prID)"; 

     command.Parameters.AddWithValue("@startDate", startDate); 
     command.Parameters.AddWithValue("@dueDate", dueDate); 
     command.Parameters.AddWithValue("@progress", progress); 
     command.Parameters.AddWithValue("@status", status); 
     command.Parameters.AddWithValue("@prID", prID); 

     connection.Open(); 
     command.ExecuteNonQuery(); 
     connection.Close(); 
    }