📜  c# 从对象生成插入语句 - C# (1)

📅  最后修改于: 2023-12-03 15:13:50.380000             🧑  作者: Mango

用C#从对象生成插入语句

在开发过程中,我们通常需要将对象存储到数据库中。生成适当的插入语句是一个重要的任务。在本文中,我们将介绍如何使用C#从对象生成插入语句。

前提条件
  • 已经连接到数据库(例如,使用ADO.NET, Entity Framework等框架)
  • 你已经创建了一个对象并想要将其存储到数据库中
生成插入语句

我们将演示一种通用方法,从任何对象生成插入语句。我们将使用反射来动态获取对象的属性和值。下面是示例代码:

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语句。现在,您可以将此方法应用于您的项目中,并生成适当的插入语句。