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#程序刚刚创建的新表进行比较的快速方法是什么。或者更基本地说:这个格式的表存在吗,是还是否。
我很抱歉我的长篇大论,我的坏习惯:-(
真诚地,抢劫
将来,如果你有多个问题,你真的应该把它们分解成多个帖子。
对于问题1:.NET将透明地缓存SqlConnection
s,因此只要连接字符串始终相同,快速创建和关闭连接的开销就应该很小。
对于问题#2和#3,您应该分别查看INFORMATION_SCHEMA.TABLES和INFORMATION_SCHEMA.COLUMNS视图。