我正在尝试在SqlCe数据库(版本3.5,哦和使用C#3)中进行大量的批量插入.我已经尝试了各种方法(表适配器插入,准备参数化查询,sqlceresultset插入等).正如我在许多网站上看到的那样,最快的时间是在表直接模式下使用SqlCeResultSet对象.
我想通过在执行插入之前禁用必要表上的所有索引来进一步提高速度(之后我会重建它们).我有一个问题让ALTER INDEX语句工作(以前从未使用它,所以我确定我忽略了一些简单的事情).
基本上我已经创建了一个SqlCeCommandObject并以下面的方式设置了一个alter语句(Connection对象已经设置并且已经打开等):
. . . SqlCeCommand disableIndexCommand = Connection.CreateCommand(); disableIndexCommand.CommandText = "ALTER INDEX ALL ON ItemMaster DISABLE"; disableIndexCommand.ExecuteNonQuery(); . . .
当我尝试运行此代码时,我收到以下错误:
解析查询时出错.[令牌行号= 1,令牌行偏移= 7,令牌错误= INDEX]
听起来好像它不理解alter语句中的INDEX关键字.这在SqlCe中不受支持吗?
谢谢
[更新] - 我已经尝试过其他DDL语句(如DROP INDEX,CREATE INDEX),我似乎无法让它们中的任何一个工作?就DDL语句而言,我一直在寻找寻找SSCE中支持的内容和内容的列表.没运气.有没有人知道这方面的任何好资源.关于sqlce compact版本3.5的MS文档已经相当无用我必须说...
SqlServerCe上的DROP INDEX语法是:
DROP INDEX [TableName].IndexName
SqlServerCe中没有ALTER INDEX语法,因此当它在"INDEX"中显示"error parsing"时,因为它寻找"TABLE",所以ALTER在SqlServerCe中唯一有效.
编辑:至于文档,我找到的最好的方法是下载联机丛书.如果您没有使用3.5 SP1,请在此处查看可用下载的更完整列表.