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

ado.net bulkinsert sqlbulkcopy sql-server

我有一个大约110的巨大形式领域需要保存在数据库中的列(单行)。

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

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

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

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

一般承认的答案

我担心插入这些列没有一个好的快捷方式,但使用参数可能会节省一些调试时间。通过使用参数,您无需担心字符串和类型转换中的撇号等问题。这是一个示例:

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);
  }
}


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因