创建ASP的代码.网络会员数据库

本文关键字:数据库 网络 代码 ASP 创建 | 更新日期: 2023-09-27 18:13:29

在我自己写这篇文章之前,是否有一个c#方法在那里浮动,将创建由aspnetregsql安装的表,进程和视图?

创建ASP的代码.网络会员数据库

据我所知,没有API可以直接做到这一点- aspnet_regsql.exe工具只是引用磁盘上的脚本文件。

关于如何自己实现这一点:

可以通过Process.Start手动执行aspnet_regsql.exe

或者您可以从命令行运行程序,使用命令行选项转储脚本。然后编辑这些脚本,使其与数据库无关(或者不由您决定),将这些脚本作为嵌入式资源存储在应用程序中,在运行时提取它们,并使用SqlConnectionExecuteNonQuery对数据库运行这些脚本。

以下是aspnet_regsql.exe的命令行选项:

http://msdn.microsoft.com/en-us/library/ms229862 (v = vs.80) . aspx

下面是我用来实现第二个选项的代码:
ExecuteSqlScriptResource("MyDb", "MyAssemblyName.Scripts.aspnet_regsql_add.sql");
// ...
static void ExecuteSqlScriptResource(string connectionName, string resourcePath)
{
    using (Stream scriptStream = Assembly.GetExecutingAssembly()
        .GetManifestResourceStream(resourcePath)
        )
    {
        if (scriptStream == null)
        {
            WriteLine(string.Format("Failed to open resource {0}", resourcePath));
            return;
        }
        using (
            var sqlConnection = new SqlConnection(
                ConfigurationManager
                    .ConnectionStrings[connectionName].ConnectionString
                )
            )
        {
            using (var streamReader = new StreamReader(scriptStream))
            {
                var svrConnection = new ServerConnection(sqlConnection);
                var server = new Server(svrConnection);
                server.ConnectionContext.ExecuteNonQuery(streamReader.ReadToEnd());
            }
        }
    }
}