【问题标题】:How to put SET IDENTITY_INSERT dbo.myTable ON statement如何将 SET IDENTITY_INSERT dbo.myTable ON 语句
【发布时间】:2010-07-30 15:36:18
【问题描述】:

我需要做的是有一个SET IDENTITY_INSERT dbo.myTable ON 语句,在c# 应用程序中使用上述语句的语法是什么?

【问题讨论】:

  • 致任何将此标记为“不是真正的问题”的人 - 请阅读SET IDENTITY_INSERT
  • @OMG Ponies - 我确实想知道为什么有人也有“不是一个真正的问题”:-/

标签: c# sql-server identity-insert


【解决方案1】:

这和任何其他的 SQL 都是一样的:

using (var connection = new SqlConnection("Connection String here"))
{
    connection.Open();
    var query = "SET IDENTITY_INSERT dbo.MyTable ON; INSERT INTO dbo.MyTable (IdentityColumn) VALUES (@identityColumnValue); SET IDENTITY_INSERT dbo.MyTable OFF;";
    using (var command = new SqlCommand(query, connection)
    {
        command.Parameters.AddWithValue("@identityColumnValue", 3);
        command.ExecuteNonQuery();
    }
}

【讨论】:

    【解决方案2】:

    好吧,如果它是 SqlCommand 实例的一部分,您只需将其添加到文本中:

    using(SqlConnection myConnection = new SqlConnection(connString))
    {
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "SET IDENTITY_INSERT dbo.MyTable ON";
        cmd.CommandText += //set the rest of your command here.
    }
    

    不过,我质疑这样做的必要性。如果您以足够的频率将身份插入表中以使用代码,我建议您使用存储过程来进行插入。然后你基本上可以这样称呼它:

    using(SqlConnection myConnectino = new SqlConnection(connString))
    {
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "usp_insert_record_into_my_table [ParamList]";
        cmd.CommandType = SqlCommandType.StoredProcedure;
    }
    

    【讨论】:

    • 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。 ;)
    • @Rob - 是的,我知道,老惯例。我实际上喜欢它,因为它更容易在管理工作室中找到(对我来说)。它没有其他用途。如果你真的想要,我想我可以改变它。只为你。 :P
    • 嗯 - 只要不是“sp_”,请参阅:blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/…
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多