// 删除所有用到的内核数据库 // 专门开发给安装程序卸载时候使用 public static int DeleteAllDatabase( RmsChannel channel, XmlDocument cfg_dom, out string strError) { strError = ""; string strTempError = ""; long lRet = 0; // 大书目库 XmlNodeList nodes = cfg_dom.DocumentElement.SelectNodes("itemdbgroup/database"); for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; // 实体库 string strEntityDbName = DomUtil.GetAttr(node, "name"); if (String.IsNullOrEmpty(strEntityDbName) == false) { lRet = channel.DoDeleteDB(strEntityDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除实体库 '" + strEntityDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } // 订购库 string strOrderDbName = DomUtil.GetAttr(node, "orderDbName"); if (String.IsNullOrEmpty(strOrderDbName) == false) { lRet = channel.DoDeleteDB(strOrderDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除订购库 '" + strOrderDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } // 期库 string strIssueDbName = DomUtil.GetAttr(node, "issueDbName"); if (String.IsNullOrEmpty(strIssueDbName) == false) { lRet = channel.DoDeleteDB(strIssueDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除期库 '" + strIssueDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } // 小书目库 string strBiblioDbName = DomUtil.GetAttr(node, "biblioDbName"); if (String.IsNullOrEmpty(strBiblioDbName) == false) { lRet = channel.DoDeleteDB(strBiblioDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除小书目库 '" + strBiblioDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } } // 读者库 nodes = cfg_dom.DocumentElement.SelectNodes("readerdbgroup/database"); for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; string strDbName = DomUtil.GetAttr(node, "name"); if (String.IsNullOrEmpty(strDbName) == false) { lRet = channel.DoDeleteDB(strDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除读者库 '" + strDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } } // 预约到书队列库 XmlNode arrived_node = cfg_dom.DocumentElement.SelectSingleNode("arrived"); if (arrived_node != null) { string strArrivedDbName = DomUtil.GetAttr(arrived_node, "dbname"); if (String.IsNullOrEmpty(strArrivedDbName) == false) { lRet = channel.DoDeleteDB(strArrivedDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除预约到书库 '" + strArrivedDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } } // 违约金库 XmlNode amerce_node = cfg_dom.DocumentElement.SelectSingleNode("amerce"); if (amerce_node != null) { string strAmerceDbName = DomUtil.GetAttr(amerce_node, "dbname"); if (String.IsNullOrEmpty(strAmerceDbName) == false) { lRet = channel.DoDeleteDB(strAmerceDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除违约金库 '" + strAmerceDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } } // 发票库 XmlNode invoice_node = cfg_dom.DocumentElement.SelectSingleNode("invoice"); if (invoice_node != null) { string strInvoiceDbName = DomUtil.GetAttr(amerce_node, "dbname"); if (String.IsNullOrEmpty(strInvoiceDbName) == false) { lRet = channel.DoDeleteDB(strInvoiceDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除发票库 '" + strInvoiceDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } } // 消息库 XmlNode message_node = cfg_dom.DocumentElement.SelectSingleNode("message"); if (message_node != null) { string strMessageDbName = DomUtil.GetAttr(message_node, "dbname"); if (String.IsNullOrEmpty(strMessageDbName) == false) { lRet = channel.DoDeleteDB(strMessageDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除消息库 '" + strMessageDbName + "' 内数据时候发生错误:" + strTempError + "; "; } } } // 实用库 nodes = cfg_dom.DocumentElement.SelectNodes("utilDb/database"); for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; string strDbName = DomUtil.GetAttr(node, "name"); string strType = DomUtil.GetAttr(node, "type"); if (String.IsNullOrEmpty(strDbName) == false) { lRet = channel.DoDeleteDB(strDbName, out strTempError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) { strError += "删除类型为 " + strType + " 的实用库 '" + strDbName + "' 内数据时发生错误:" + strTempError + "; "; } } } if (String.IsNullOrEmpty(strError) == false) return -1; return 0; }
// 删除一个数据库,并删除library.xml中相关OPAC检索库定义 // 如果数据库不存在会当作出错-1来报错 int DeleteDatabase(RmsChannel channel, string strDbName, out string strError) { strError = ""; long lRet = channel.DoDeleteDB(strDbName, out strError); if (lRet == -1 && channel.ErrorCode != ChannelErrorCode.NotFound) return -1; // 删除一个数据库在OPAC可检索库中的定义 // return: // -1 error // 0 not change // 1 changed int nRet = RemoveOpacDatabaseDef( channel.Container, strDbName, out strError); if (nRet == -1) { this.Changed = true; return -1; } return 0; }