2012-02-08 38 views
0

我有一个巨大的窗体,它有大约110 个字段需要保存在数据库中的列(单行)。在SQL Server中插入大量列的单行

什么是使用ADO.NET将这些多列插入数据库的最佳方法?

我不认为我应该使用这样的插入语句,因为由于字段的数量,查询会非常大。

conn.Open(); 
string insertString = @" 
    insert into Categories (CategoryName, Description) 
    values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')"; 

SqlCommand cmd = new SqlCommand(insertString, conn); 
cmd.ExecuteNonQuery(); 

我认为数据卸入临时文件,然后将它们添加到一个数据表,然后使用SqlBulkCopy的将它们插入到数据库中。

有没有更好的方法?你将如何处理这种情况?

+3

如果你的表也有〜110个字段,我很抱歉,但你做错了。重构/规范化为几个表并执行多个相关的INSERT语句。 – Yuck 2012-02-08 16:28:04

+0

你会一次添加多少行?它只是一列110列,还是我们一次谈了很多行? – 2012-02-08 16:28:59

+0

@Yuck:我帮不了它。我希望我可以花时间做到这一点。但不幸的是,这不是我现在可以控制的东西。 – Animesh 2012-02-08 16:32:10

回答

1

恐怕没有一个好的捷径来插入这个列数,但使用参数可能会节省一些调试时间。通过使用参数,您不必担心字符串和类型转换等内容。这里有一个例子:

public static void TryThis() 
{ 
    try 
    { 
    using (SqlConnection con = new SqlConnection()) 
    { 
     con.ConnectionString = "YourConnectionString"; 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "INSERT INTO Categories (CategoryName, Description) VALUES (@CategoryName, @Description)"; 
     cmd.Parameters.AddWithValue("CategoryName", "Miscellaneous"); 
     cmd.Parameters.AddWithValue("Description", "Whatever doesn't fit elsewhere"); 
    } 
    } 
    catch (Exception ex) 
    { 
    throw new Exception(ex.Message); 
    } 
}