// return: // -1 出错 // 0 成功 public int Write( string strDatabaseName, KeyCollection keys, delegate_getfilename getfilename, out string strError) { strError = ""; // 确保 keys 里面的事项是排序过的。如果没有排序,本函数也能工作,只是效率略低 DelayTable table = null; KeyCollection part_keys = new KeyCollection(); foreach (KeyItem item in keys) { if (table == null) { table = GetTable(strDatabaseName, item.SqlTableName); if (string.IsNullOrEmpty(table.FileName) == true) { string strFilename = getfilename(strDatabaseName, item.SqlTableName); int nRet = table.Create(strFilename, out strError); if (nRet == -1) { return(-1); } } } else { if (table.TableName != item.SqlTableName) { if (part_keys.Count > 0) { table.Write(part_keys); part_keys.Clear(); } table = GetTable(strDatabaseName, item.SqlTableName); if (string.IsNullOrEmpty(table.FileName) == true) { string strFilename = getfilename(strDatabaseName, item.SqlTableName); int nRet = table.Create(strFilename, out strError); if (nRet == -1) { return(-1); } } } } part_keys.Add(item); } if (part_keys.Count > 0) { Debug.Assert(table != null, ""); table.Write(part_keys); part_keys.Clear(); } return(0); }
// return: // -1 出错 // 0 成功 public int Write( string strDatabaseName, KeyCollection keys, delegate_getfilename getfilename, out string strError) { strError = ""; // 确保 keys 里面的事项是排序过的。如果没有排序,本函数也能工作,只是效率略低 DelayTable table = null; KeyCollection part_keys = new KeyCollection(); foreach (KeyItem item in keys) { if (table == null) { table = GetTable(strDatabaseName, item.SqlTableName); if (string.IsNullOrEmpty(table.FileName) == true) { string strFilename = getfilename(strDatabaseName, item.SqlTableName); int nRet = table.Create(strFilename, out strError); if (nRet == -1) return -1; } } else { if (table.TableName != item.SqlTableName) { if (part_keys.Count > 0) { table.Write(part_keys); part_keys.Clear(); } table = GetTable(strDatabaseName, item.SqlTableName); if (string.IsNullOrEmpty(table.FileName) == true) { string strFilename = getfilename(strDatabaseName, item.SqlTableName); int nRet = table.Create(strFilename, out strError); if (nRet == -1) return -1; } } } part_keys.Add(item); } if (part_keys.Count > 0) { Debug.Assert(table != null, ""); table.Write(part_keys); part_keys.Clear(); } return 0; }