【发布时间】:2017-06-06 12:38:49
【问题描述】:
我正在开发一个小项目作为一种爱好,结果走到了死胡同。我正在使用 Visual Studio 和 SQL Server Management Studio。
我使用实体框架模型能够将数据条目添加到具有 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# 中操作代码,然后开始将任何数据条目保存到新创建的列吗?
谢谢
【问题讨论】:
-
不要那样做,这是糟糕的设计。只需将日期保存在
date/datetime(2)列中即可。 -
您认为今年制作一个单独的专栏有什么好处?这只会在您需要查询该数据时给您带来更多问题
-
UPDATE testtable2017 SET Last_Bulb_Replaced_2017 = '" + Calendar1.SelectedDate.ToString() + "' WHERE Room_No ='" + roomNo + "'"; stackoverflow.com/a/30367283/34092。
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
您已在代码中组合了 ADO.NET 和实体框架。在任何情况下,当您在不更改代码的情况下向表中添加新列时,代码都会中断。
标签: c# asp.net sql-server database ssms