Efficiënt writing to a SQL Server from C#

本文关键字:SQL Server from to writing #235 nt Effici | 更新日期: 2023-09-27 18:21:30

我是c#编程的新手,对SQL没有任何经验。但当VB6问世时,我曾经做过一些编程。我正在编写一个程序,从一个由计算机生成的转储文件中创建SQL Server数据库。它中有数据,我需要为其创建+-200个表,然后我再次读取该文件以填充所有表。

我安装了Microsoft SQL Server 2014和Visual Studio Express 2015。

我能够读取文本文件并确定我需要的表,我可以打开数据库并创建一个表。我有三个问题,其中两个我可以在这个论坛上找到答案,还有一个问题仍然让我感到困惑

第一个问题是,每次创建新表时创建一个新连接是否有效。C#程序"设计"了我放入字符串"NewType"中的表,然后调用CreateBlockType来创建新表。之后,将创建一个新表并再次发送到CreateBlockType。这种情况会发生200次,以后在填充实际数据时可能会发生45000次。

static void CreateBlockType(string NewType)
{
    using (SqlConnection conn = new SqlConnection("Server=WIJ-PC''SQLEXPRESS;Initial Catalog=FoxData;Integrated Security=True;"))
    {
        conn.Open();
        using (SqlCommand command = new SqlCommand(NewType, conn)) 
              command.ExecuteNonQuery();
        conn.Close();
    }

另外两个问题是:

  • 如何检查表是否存在(没有找到好的答案)

  • 最后一个有点难以解释,但假设文件包含两种Customer类型的数据,它们有相同的名称,但列可能略有不同,所以我需要创建两个表,但将数据库中现有的表与c#程序刚刚创建的新表进行比较的快速方法是什么。或者更基本地说:这个格式的表存在吗,是还是否。

我很抱歉我的长篇大论,我的坏习惯:-(

真诚地,抢劫

Efficiënt writing to a SQL Server from C#

将来,如果你有多个问题,你真的应该把它们分解成多个帖子。

对于问题1:.NET将透明地缓存SqlConnection s,因此只要连接字符串始终相同,快速创建和关闭连接的开销就应该很小。

对于问题#2和#3,您应该分别查看INFORMATION_SCHEMA.TABLES和INFORMATION_SCHEMA.COLUMNS视图。