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

如何从C代码隐藏生成SQL脚本文件?

  •  2
  • Himadri  · 技术社区  · 15 年前

    如何从C代码隐藏生成SQL脚本文件?脚本文件将包含 创造 数据库中storedproc的语句。

    如何从c中的db生成脚本并写入.sql文件?

    是否可以从C中的db生成表或storedproc的create和drop语句脚本?#

    请帮忙。

    5 回复  |  直到 15 年前
        1
  •  1
  •   Russ Cam    15 年前

    如果我理解正确,设置一个 SqlCommand 具有以下内容的对象

    using (SqlConnection con = new SqlConnection ("Connection String Here"))
    {
        using (SqlCommand cmd = con.CreateCommand())
        {
            cmd.CommandText = "sp_helptext @procName";
            cmd.CommandType = CommandType.Text;
    
            cmd.Parameters.AddWithValue("procName", "Name Of Stored Proc Here");
    
            con.Open(); 
    
            using (SqlDataReader rdr = cmd.ExecuteReader())
            {
                while (rdr.Read())
                {
                    /* 
                        You will get the CREATE PROC text here
                        Do what you need to with it. For example, write
                        to a .sql file
                    */
                }
            }
        }
    }
    

    这会将存储过程的文本作为 CREATE PROC 语句,在结果集中,结果集的每一行都是存储过程的一行。

    创建一个 DROP PROC 陈述,简单写出

    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'procName') AND type in (N'P', N'PC'))
    DROP PROC procName
    

    到A .sql 文件。

        2
  •  3
  •   KenJ    15 年前

    你在找 SQL Management Objects (SMO) -用于使用SQL Server的.NET库。

    你要做的事情相当简单。立即存储过程问题的C代码类似于(在这里,您将脚本写入.sql文本文件而不是控制台)

    Server theServer = new Server("myServerName");
    Database myDB = theServer.Databases["myDatabaseName"];
    
    StoredProcedure sp = myDB.StoredProcedures["mySprocName", "dbo"];
    
    StringCollection sc = sp.Script();
    
    foreach (string s in sc)
      Console.WriteLine(s);
    

    这段代码摘自一篇题为 Scripting Database Objects using SMO 比尔·格拉齐亚诺

        3
  •  1
  •   Robert Harvey Isaac Blanco    15 年前

    如果我正确理解了你的问题,也许有一种比你提出的方法更安全、更简单的方法来做你想做的事情。您可以在代码中构建SQL语句,设置 SQLCommand 例如,直接执行SQL语句。

        4
  •  -1
  •   royse41    15 年前

    如果您知道表的架构,但只是更改了表的名称,则需要获取创建脚本的副本(很容易从SQL Management Studio获得)并将其放入代码隐藏文件中,然后使用文本编写器或其他工具将其保存为.sql文件…

        5
  •  -1
  •   jerjer    15 年前

    我对SQL Server不太了解,但以下查询的结果可能对您有所帮助:

    select * from information_schema.columns
    select * from information_schema.tables
    select * from sysobjects