可以说我有2个数据库文件,主数据库和新数据库 . 每次发布新数据库文件时,用户都需要从新数据库更新主数据库 .
-
如果找到某一行,例如CustomerName相同,然后我需要更新主数据库中的旧记录 .
-
如果找不到,那么我需要在主数据库中插入新记录 .
我尝试过的是从新数据库中选择所有行,然后使用reader.Read()逐行查看 . 在循环内部,我将检查更新sql是否返回-1,然后我将执行insert sql .
上面的方法存在性能问题,因为它需要遍历每一行来执行更新或插入 . 我建议的解决方案是将新数据库附加到主数据库中,然后执行“INSERT或REPLACE表SELECT * FROM newdatabase.table” .
但很快我意识到了一个问题 . 我实际上没有表中的主键,或者主键无助于决定INSERT或REPLACE . 这是由于某些特定的客户要求 . 在这种情况下,我不能在没有主键的情况下使用INSERT或REPLACE,例如要比较的列(CustomerName)不是唯一键或主键 .
如果您有更好的解决方案,请告诉我,谢谢!
1 回答
要插入缺少的行 - 并使用附加的数据库 - 您可以执行以下操作:
插入Table1(col2,col3,...)选择col2,col3,...
来自newdatabase.Table1,其中customername不在(从Table1中选择customername)
这假设col1是主要的自动增量ID . 您需要命名除此col1之外的所有列 . 对于更新,请使用'customer name in'执行类似的更新命令 .