2017-06-06 91 views
0

我正在開發一個小項目作爲業餘愛好並走向死衚衕。我正在使用Visual Studio和SQL Server Management Studio。每年更改時將列添加到SQL Server數據庫

我使用實體框架模型,以便能夠將數據條目添加到具有4列的表中。其中兩個都應該記錄的數據錄入,正在發生的2017年是這樣的:

if (CheckBoxBulb.Checked == true) 
{ 
    string roomNo = ""; 
    roomNo = DropDownList1.SelectedValue.ToString(); 
    testtable2017 entry = new testtable2017(); 

    SqlConnection dataConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["iPadLoanConnectionString2"].ToString()); 

    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = "UPDATE testtable2017 SET Last_Bulb_Replaced_2017 = '" + Calendar1.SelectedDate.ToString() + "' WHERE Room_No ='" + roomNo + "'"; 

    cmd.Connection = dataConnection; 

    dataConnection.Open(); 
    cmd.ExecuteNonQuery(); 
    dataConnection.Close(); 

    iPadEntities db = new iPadEntities(); 
    db.testtable2017.Add(entry); 
    db.SaveChanges(); 
} 
else if(CheckBoxFilter.Checked == true) 
{ 
    string roomNo = ""; 
    roomNo = DropDownList1.SelectedValue.ToString(); 

    testtable2017 entry = new testtable2017(); 

    SqlConnection dataConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["iPadLoanConnectionString2"].ToString()); 

    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = "UPDATE testtable2017 SET Last_Cleaned_Filter_2017 = '" + Calendar1.SelectedDate.ToString() + "' WHERE Room_No ='" +roomNo +"'"; 

    cmd.Connection = dataConnection; 

    dataConnection.Open(); 
    cmd.ExecuteNonQuery(); 
    dataConnection.Close(); 

    iPadEntities db = new iPadEntities(); 
    db.testtable2017.Add(entry); 
    db.SaveChanges(); 
} 

到目前爲止好,它是可以正常使用,但讓說,當一年的變化,到2018年,我想創建兩列是將會保存2018年以前記錄的所有數據。有什麼辦法可以達到這個目的嗎?如果是的話,我怎樣才能操縱C#中的代碼,然後開始將任何數據條目保存到新創建的列中?

謝謝

+5

不要這樣做,這是可怕的設計。只需將日期保存在「日期/日期時間(2)」列中即可。 – HoneyBadger

+0

您認爲如何在今年製作單獨的專欄?當你需要查詢的數據 – Steve

+1

UPDATE testtable2017 SET Last_Bulb_Replaced_2017 =這隻會給你更多的問題 ' 「+ Calendar1.SelectedDate.ToString()+」' WHERE Room_No ='」 + roomNo + 「'」; < - 這就是超級危險,並開放SQL注入去閱讀https://stackoverflow.com/a/30367283/34092 – mjwills

回答

1

,我和所有誰說這是一個不好的設計和一個可怕的想法的人認同。

然而,處理你的問題的學術性,你可以簡單一些邏輯添加到您的程序檢查今天是什麼年代了,查詢數據庫,看看是否列在名稱中存在一年。

如果列不存在,然後運行ALTER TABLE語句腳本的其餘部分之前添加它。您還需要使用Year來構建您的UPDATE查詢,而不是在其中硬編碼「2017」。

0

添加列:在對象資源管理器中,右鍵單擊要添加列的表並選擇設計。 單擊列名稱列中的第一個空白單元格。 在單元格中輸入列名稱。列名是必需的值。 按Tab鍵轉到數據類型單元格,然後從下拉列表中選擇一種數據類型。這是一個必需的值,如果您不選擇,將被分配爲默認值。

相關問題