Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SQL Server CE插入到数据库_C#_Sql Server Ce - Fatal编程技术网

C# 使用SQL Server CE插入到数据库

C# 使用SQL Server CE插入到数据库,c#,sql-server-ce,C#,Sql Server Ce,我已经三次重新设计了我的项目,最后我想在我的应用程序失控之前我应该问一下。我正在构建一个复杂的系统监控和报告生成应用程序。我一直在试图找出哪种数据库方法最适合我的情况,我认为这是SQL Server CE,因为我在一台工作笔记本电脑上,安装东西可能需要一周的时间。如果有一个更友好的应用程序我应该使用,我愿意接受建议 假设我坚持使用SQL Server CE,那么将记录插入到具有多个列的.sdf文件中的最佳方法是什么?例如,数据库中的表可以包含100列。它可以像现在一样正常工作,但似乎每插入一行大

我已经三次重新设计了我的项目,最后我想在我的应用程序失控之前我应该问一下。我正在构建一个复杂的系统监控和报告生成应用程序。我一直在试图找出哪种数据库方法最适合我的情况,我认为这是SQL Server CE,因为我在一台工作笔记本电脑上,安装东西可能需要一周的时间。如果有一个更友好的应用程序我应该使用,我愿意接受建议

假设我坚持使用SQL Server CE,那么将记录插入到具有多个列的
.sdf
文件中的最佳方法是什么?例如,数据库中的表可以包含100列。它可以像现在一样正常工作,但似乎每插入一行大约需要1秒。代码如下所示(最终会有更多列):

基于这种情况,我可以做些什么来提高查询的性能吗?我来自AS400大型机世界,在那里,1秒将为您提供数百行甚至数千行。应用程序的最终结果是,它将创建一个要发送到某处的输出文件,然后双击该文件将所有这些数据加载到远程机器上。我已经看过了
SqlCEAdapter
,但是还没有找到一个很好的解释来说明如何使用它来适应我的情况


提前谢谢

你听说过数据库规范化吗?这样可以避免重复数据,并减少每次插入所需的列数。如果没有CommitMode.Immediate,进程也会运行得更快。最后,您可以使用SqlCeUpdateableRecord和TableDirect绕过查询进程或进行快速插入。

AS400_对象有多少索引?你能发布他们的定义吗?我必须承认,我只是在学习PC数据库世界,所以请原谅我在这里闲逛了一会儿我使用的是VisualStudioDatabaseExplorer,唯一唯一的主键是ID字段,每次插入一条记录时,ID字段都会增加一个。表中的每个其他字段都设置为允许空值yes、unique no和主键no。我也用PHP编程,可以在任何字段上设置索引,但我还无法在DB explorer中找到在字段上设置索引的方法。感谢您的回复!我还没有听说过db规范化,但我今天会在互联网上搜索它,看看是否能找到任何东西!
con.Open();

SqlCeTransaction trans = con.BeginTransaction();

String insertRecord = "INSERT INTO AS400_Objects(projectName, obBuildObjectName, " +
                    "obBuildLibrary, obBuildType, obBuildExtendedAttribute, obBuildFormatLevel, " +
                    "obBuildUserAttribute, obBuildChangeDate, obBuildCreationDate, " +
                    "obBuildCreatorSystem, obBuildCreatorUserProfile, obBuildJournal, " +
                    "obBuildJournalStatus, obBuildLastUsedDate, obBuildObjectSize, obBuildOwner, " +
                    "obBuildRestoreDate, obBuildSaveDate, obBuildSourceFile, " +
                    "obBuildSourceFileUpdatedDate, obBuildTextDescription, obBuildSystemVersion)" +
                    "VALUES(@projectName, @obBuildObjectName, @obBuildLibrary, @obBuildType, " +
                    "@obBuildExtendedAttribute, @obBuildFormatLevel, @obBuildUserAttribute, " +
                    "@obBuildChangeDate, @obBuildCreationDate, @obBuildCreatorSystem, " +
                    "@obBuildCreatorUserProfile, @obBuildJournal, @obBuildJournalStatus, " +
                    "@obBuildLastUsedDate, @obBuildObjectSize, @obBuildOwner, @obBuildRestoreDate, " +
                    "@obBuildSaveDate, @obBuildSourceFile, @obBuildSourceFileUpdatedDate, " +
                    "@obBuildTextDescription, @obBuildSystemVersion)";

SqlCeCommand cmd = new SqlCeCommand(insertRecord, con);
cmd.Transaction = trans;

cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@projectName", packageName);
cmd.Parameters.AddWithValue("@obBuildObjectName", od[i].getValue(ObjectDescription.NAME).ToString());
cmd.Parameters.AddWithValue("@obBuildLibrary", od[i].getValue(ObjectDescription.LIBRARY).ToString());
cmd.Parameters.AddWithValue("@obBuildType", od[i].getValue(ObjectDescription.TYPE).ToString());
cmd.Parameters.AddWithValue("@obBuildExtendedAttribute", od[i].getValue(ObjectDescription.EXTENDED_ATTRIBUTE).ToString());
cmd.Parameters.AddWithValue("@obBuildFormatLevel", "");
cmd.Parameters.AddWithValue("@obBuildUserAttribute", od[i].getValue(ObjectDescription.USER_DEFINED_ATTRIBUTE).ToString());
cmd.Parameters.AddWithValue("@obBuildChangeDate", changeDate);
cmd.Parameters.AddWithValue("@obBuildCreationDate", creationDate);
cmd.Parameters.AddWithValue("@obBuildCreatorSystem", od[i].getValue(ObjectDescription.CREATOR_SYSTEM).ToString());
cmd.Parameters.AddWithValue("@obBuildCreatorUserProfile", od[i].getValue(ObjectDescription.CREATOR_USER_PROFILE).ToString());
cmd.Parameters.AddWithValue("@obBuildJournal", od[i].getValue(ObjectDescription.JOURNAL).ToString());
cmd.Parameters.AddWithValue("@obBuildJournalStatus", journalStatus);
cmd.Parameters.AddWithValue("@obBuildLastUsedDate", lastUsedDate);
cmd.Parameters.AddWithValue("@obBuildObjectSize", od[i].getValue(ObjectDescription.OBJECT_SIZE).ToString());
cmd.Parameters.AddWithValue("@obBuildOwner", od[i].getValue(ObjectDescription.OWNER).ToString());
cmd.Parameters.AddWithValue("@obBuildRestoreDate", restoreDate);
cmd.Parameters.AddWithValue("@obBuildSaveDate", saveDate);
cmd.Parameters.AddWithValue("@obBuildSourcefile", od[i].getValue(ObjectDescription.SOURCE_FILE).ToString());
cmd.Parameters.AddWithValue("@obBuildSourceFileUpdatedDate", sourceFileUpdatedDate);
cmd.Parameters.AddWithValue("@obBuildTextDescription", od[i].getValue(ObjectDescription.TEXT_DESCRIPTION).ToString());
cmd.Parameters.AddWithValue("@obBuildSystemVersion", od[i].getValue(ObjectDescription.SYSTEM_LEVEL).ToString());

cmd.ExecuteNonQuery();
trans.Commit(CommitMode.Immediate);

cmd.Dispose();

con.Close();
con.Dispose();