【发布时间】:2015-10-10 05:19:20
【问题描述】:
我有DataTable,我需要使用默认值添加row,并将其保存到数据库中。
奖励:自动递增键列会很棒。
我怎样才能做到这一点?
【问题讨论】:
标签: c# datatable system.data
我有DataTable,我需要使用默认值添加row,并将其保存到数据库中。
奖励:自动递增键列会很棒。
我怎样才能做到这一点?
【问题讨论】:
标签: c# datatable system.data
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。
【讨论】:
您可以使用默认值添加新行并将其保存到数据库中。
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 等自动递增键,则在插入新行时会起作用。
【讨论】: