【问题标题】:How to add row with default values into System.Data.DataTable如何将具有默认值的行添加到 System.Data.DataTable
【发布时间】:2015-10-10 05:19:20
【问题描述】:

我有DataTable,我需要使用默认值添加row,并将其保存到数据库中。

奖励:自动递增键列会很棒。

我怎样才能做到这一点?

【问题讨论】:

标签: c# datatable system.data


【解决方案1】:
static int i = 1;
private void CreateDefault()
{
    DataColumn column = null;
    DataTable table = new DataTable();

    column = new DataColumn();
    var Col1 = column;
    Col1.DataType = System.Type.GetType("System.Int32");
    Col1.DefaultValue = i;
    Col1.Unique = false;
    table.Columns.Add(column);
    i = i + 1;

    column = new DataColumn();
    var Col2 = column;
    Col2.DataType = System.Type.GetType("System.String");
    Col2.DefaultValue = "Your String";
    table.Columns.Add(column);

    DataRow row = null;
    row = table.NewRow();

    table.Rows.Add(row);
}

变量i 将是自动递增键列。现在将DataTable 插入DataBase

【讨论】:

    【解决方案2】:

    您可以使用默认值添加新行并将其保存到数据库中。

    using (var conn = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("SELECT * FROM YourTableName", conn);
        SqlDataAdapter da = new SqlDataAdapter() { SelectCommand = cmd };
    
        // Load records to a DataSet
        DataSet ds = new DataSet();
        da.Fill(ds, "YourTableName");
        var table = ds.Tables["YourTableName"];
    
        // Add a new row with default value
        table.Rows.Add();
    
        // Reflect the change to database
        SqlCommandBuilder cb = new SqlCommandBuilder(da);
        da.Update(ds, "YourTableName");
    }
    

    此外,如果您为 MS SQL Server (https://msdn.microsoft.com/en-us/library/ms186775.aspx) 设置了 IDENTITY 等自动递增键,则在插入新行时会起作用。

    【讨论】:

    • 能否请您显示您的连接字符串(密码等除外)并使用其默认值命名所有列?我想弄清楚为什么这在您的数据库中不起作用。
    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多