在SQL Server中插入包含大量列的单行

时间:2012-02-08 16:20:32

标签: sql-server ado.net bulkinsert sqlbulkcopy

我有一个庞大的表单,大约有110个字段列(单行)需要保存在数据库中。

使用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将它们插入到数据库中。

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

1 个答案:

答案 0 :(得分: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);
  }
}