C# c中update方法where子句的准备问题

C# c中update方法where子句的准备问题,c#,sql,C#,Sql,嘿,伙计们,我发现在下面的更新方法中准备where子句有点困难 我正在创建一个更新方法,我在以正确的方式做这件事吗?但是我仍然很困惑,我怎么知道在where子句中使用哪个属性呢 或者有更好的方法来创建通用更新方法吗?我会非常感激的 编辑 编辑 在上面的代码中,有一个if条件,如果foreach循环中i==0,我不想这样做,因为这里我假设我的objects属性,即employee_id位于PropertyInfo[]数组的第一个索引处。。如果有人创建了一个类属性,比如公共字符串employee_n

嘿,伙计们,我发现在下面的更新方法中准备where子句有点困难 我正在创建一个更新方法,我在以正确的方式做这件事吗?但是我仍然很困惑,我怎么知道在where子句中使用哪个属性呢

或者有更好的方法来创建通用更新方法吗?我会非常感激的

编辑

编辑


在上面的代码中,有一个if条件,如果foreach循环中i==0,我不想这样做,因为这里我假设我的objects属性,即employee_id位于PropertyInfo[]数组的第一个索引处。。如果有人创建了一个类属性,比如公共字符串employee_name{get,set}公共字符串employee_add{get,set}公共字符串employee_id{get,set},在这种情况下,foreach循环将跳过employee_name而不是'employee_id',因为我使用了ifi=0,我想要一种方法,只跳过标识值,即更新函数中foreach循环中的employee_id,而不考虑其在propertyInfo数组中的索引。。。。。我解释得好吗?

您真的应该使用SQLCOmmand.Parameters,而不是在sql中串联字符串。 这样一来,它将更具可读性、安全性和功能性。 您的代码中有一个经典的查询漏洞,有人可以发送一个包含“;删除数据库;选择*from dual where='或类似选项


因此,请更新您的代码,如果您有相同的问题,我们将看到发生了什么。

您可以使用自定义属性或接口来确定表示实体id的属性,并在where子句中使用它。尽管这种方法有一个消极的方面,那就是您必须更改实体类,这并不总是可能的。 下面是一个例子:

[PrimaryKey]
public string EmployeeId
{
get;set;
}

另一种方法可能是将实体元数据存储在其他位置,例如xml文件或字典

例如:

<entities>
<entity type="Employee" primarykey="EmployeeId" />
</entities>

使用SQLCommand参数,而不是string.FormatOoh,这就是SQL注入天堂!严肃地说:那是非常不安全的代码我编辑了我的代码现在我的问题是我如何准备where子句?Simic:嗨,我编辑了我的代码并使用了SqlCommand.Parameters.Add方法,现在我的问题是我如何准备where子句???@FosterZ你能提供你希望实现的最终SQL吗?我可以看一下,我使用反射获取列名及其值。。现在我想创建update语句,但我的问题是准备update语句的where子句,例如,我将类employee和属性设置为employee_id、employee_名称、employee_add,所以要使用反射创建update语句,我将update employee set列_名称和_值_by_反射where?=?请参阅where子句中的i want eployee_id=某个值。。。我觉得我解释不清楚……你可以在where子句中添加and employee_id=@employee_id,然后在command中添加另一个参数,@employee_id。我想,我没能清楚地表达我的问题,请看一看我编辑了我的问题,代码下面……thanx a ton,属性对我来说就行了。。。但为此,我需要正确地处理对象[]properties=info.getCustomAttributesRue;我想知道是否有任何方法可以按名称获取属性,因为info.getCustomAttributes返回一个数组,但我只需要1个属性..据我所知,这是获取自定义属性的唯一方法。
public class Employee:IEntity
{
public object EntityId
{
get
{
return this.EmployeeId
}
}
}
<entities>
<entity type="Employee" primarykey="EmployeeId" />
</entities>
Hashtable EntityPrimaryKeys=new Hashtable{(typeof(Employee),"EmployeeId")};