📅  最后修改于: 2023-12-03 15:13:50.380000             🧑  作者: Mango
在开发过程中,我们通常需要将对象存储到数据库中。生成适当的插入语句是一个重要的任务。在本文中,我们将介绍如何使用C#从对象生成插入语句。
我们将演示一种通用方法,从任何对象生成插入语句。我们将使用反射来动态获取对象的属性和值。下面是示例代码:
public string GenerateInsertStatement<T>(T obj, string tableName)
{
Type type = typeof(T);
PropertyInfo[] properties = type.GetProperties();
StringBuilder sbColumns = new StringBuilder();
StringBuilder sbValues = new StringBuilder();
foreach (PropertyInfo property in properties)
{
if (property.GetValue(obj) != null)
{
sbColumns.Append(property.Name + ", ");
sbValues.Append("'" + property.GetValue(obj).ToString() + "', ");
}
}
sbColumns.Remove(sbColumns.Length - 2, 2);
sbValues.Remove(sbValues.Length - 2, 2);
string insertStatement = $"INSERT INTO {tableName} ({sbColumns.ToString()}) VALUES ({sbValues.ToString()})";
return insertStatement;
}
在上述代码中,我们使用Type.GetProperties() 方法来获取对象的属性。然后,我们使用StringBuilder来构建插入语句。首先,我们迭代每个属性并检查值是否不为空。如果值不为空,我们将该属性的名称添加到sbColumns中,并将该属性的值添加到sbValues中。然后,我们使用sbColumns和sbValues构建INSERT语句。
该方法接受两个参数:
obj
- 要插入的对象tableName
- 表名现在我们来看一个示例,如何使用上述方法从Person
对象生成插入语句:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Person p = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 30
};
string tableName = "Persons";
string insertStatement = GenerateInsertStatement(p, tableName);
Console.WriteLine(insertStatement);
以上示例将打印以下内容:
INSERT INTO Persons (FirstName, LastName, Age) VALUES ('John', 'Doe', '30')
在本文中,我们介绍了如何使用C#从对象生成插入语句。我们使用反射动态获取对象的属性和值。我们使用StringBuilder来构建INSERT语句。现在,您可以将此方法应用于您的项目中,并生成适当的插入语句。