代码之家  ›  专栏  ›  技术社区  ›  keparo

如何将sql脚本准确地插入到SqlServer表中

  •  3
  • keparo  · 技术社区  · 16 年前

    我想在表中插入一个sql脚本。我敢肯定,这比仅仅用引号将脚本包装并将其放入insert语句要复杂得多(例如,带有引号和更复杂的转义的脚本似乎有问题)

    那么,如何在SqlServer表中安全地存储任意tsql呢?

    如果需要,我可以使用sql或c来编码脚本。

    3 回复  |  直到 16 年前
        1
  •  9
  •   John Gietzen    16 年前

    使用参数化查询:

    var cmd = new SqlCommand(...);
    cmd.CommandText = "INSERT INTO [Bla] ([SQL Column]) VALUES (@MyValue)";
    cmd.Parameters.AddWithValue("MyValue", yourValueHere);
    

    这将照顾到所有的报价等。

    如果要使用存储过程,则最终将以类似的方式执行它:

    var cmd = new SqlCommand(...);
    cmd.CommandText = "StoreSQL";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("MyValue", yourValueHere);
    
        2
  •  2
  •   Coding Flow    16 年前

    例如

    CREATE PROCEDURE uspStoreSQL
    (
      @sql nvarchar(max)
    )
    AS
    INSERT INTO SomeTable (SQLText)
    Values (@sql)
    
        3
  •  1
  •   sashaeve    16 年前