在将数据推送到数据库后,如何使用新更新的数据刷新数据表?
我有一个自动递增表,由一个数据表/ sqlbulkcopy组合填充。我需要在自动增量中生成的关键信息,而不是构建一个庞大的SQL语句来重新查询数据库,我确信必须有更好的方法来实现它。
解决方案必须非常快。我正在处理需要及时处理的数十万条记录。
构建DataTable
public void SetupTable()
{
m_Table = new DataTable("Table");
m_Table.Columns.Add(new DataColumn("TagID", typeof(int)));
m_Table.Columns.Add(new DataColumn("ResultID", typeof(int)));
m_Table.Columns.Add(new DataColumn("TypeID", typeof(int)));
m_Table.Columns.Add(new DataColumn("Name", typeof(string)));
m_Table.Columns.Add(new DataColumn("bDel", typeof(int)));
m_Table.Columns.Add(new DataColumn("Notes", typeof(string)));
m_Table.Columns.Add(new DataColumn("Units", typeof(string)));
}
填充数据表
m_Table.Rows.Add(m_Table.Rows.Count + 1, resultid, tagtypeid, SqlStr(tagname), (isDel ? "1" : "0"), "", "");
推送到数据库
public bool AddProcessedTable()
{
bool bSuccess = true;
try
{
if (sqlConn.State != ConnectionState.Open) sqlConn.Open();
SqlBulkCopy SqlCmd = new SqlBulkCopy(sqlConn);
SqlCmd.BulkCopyTimeout = 600;
SqlCmd.DestinationTableName = "Table";
SqlCmd.WriteToServer(m_Table);
}
catch (Exception ex)
{
bSuccess = false;
plog.LogMsg(String.Format("General Exception during DestWarehouse.AddProcessedTable(): {0}", ex.Message));
}
return bSuccess;
}
刷新DataTable
我很少在这里发帖 - 所以如果我需要更正这篇文章并添加更多细节我绝对可以,但任何帮助都非常感谢!感谢。
答案 0 :(得分:0)
为什么不向数据库抛出新的SELECT,将结果存储在DataReader中,然后使用Load,刷新DataTable。
DataTable dt = //Your table
//Here a select to the database
DataReader dr = //Your select query
dt.Load(dr)
像这样的事情。但是你知道,使用using语句关闭数据接口等等......
答案 1 :(得分:0)
或者只添加和ID列,好的索引,然后存储最后一个Id,并根据最后使用的ID选择ID。