最终目标是创建一个包含所有自动化测试及其添加日期的数据库。我们使用DLL上的反射来获取每个项目,类和测试名称。我们将它保存到数据表中。从那里,我们想将它保存在数据库中。我们在数据库中有一个额外的字段,其默认sql值为GetDate()。如果我手动将值插入SQL,则会为我填充日期字段。我们的代码从反射中获取属性,我们对dataTable很满意。
我希望发生的是C#exe可以每天运行,任何新的测试都会被添加到SQL中,现有的测试以及sql生成的时间值将保持不变。我认为“更新”会很好用,因为我只想添加新的测试。
我填写我的数据表如下
DataRow workRow = dt.NewRow();
workRow["Project"] = testProject.GetName().Name;
workRow["TestName"] = method.Name;
workRow["Class"] = method.DeclaringType.Name;
dt.Rows.Add(workRow);
我尝试像这样更新数据库
SqlConnection cn = new SqlConnection("Data Source=SomeSqlServer;Initial Catalog=TestTracking;Integrated Security=SSPI;Network Library=DBNMPNTW;");
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * from Tests", cn);;
SqlCommandBuilder cmdb = new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(ds,"Tests");
这会返回无效的操作异常,因为我在SourceColumn Date的dataTable'tests'中缺少DataColumn Date。这是真的。我想忽略日期并让SQL填充它。
有没有人有关于如何解决这个问题的想法,或者通过使用不同的方法让它变得更好?
答案 0 :(得分:0)
您可以更改SELECT字符串,以便仅从Tests中选择Project,TestName和Class。您还可以创建一个存储过程,根据您的3个参数更新测试表。