0

我目前正在开发应用程序,其中要求之一是能够从 ASP.NET 内部创建 SP、表、函数、触发器等。我使用的语言是 C#,但我不知道这是否可能。您介意为我指出正确的方向或提供一些代码示例吗?

我尝试在网上查找,但找不到任何有关此的信息。

@rmayer06,我听从了你的建议,下面是我的代码:

protected void createproc_Click(object sender, EventArgs e)
{
    string sqlscript = File.ReadAllText(Server.MapPath("~/sp_create.sql"));

    try
    {
        SqlConnection con = new SqlConnection();
        SqlCommand cmd = new SqlCommand(sqlscript, con);
        cmd.CommandType = CommandType.Text;
        con.ConnectionString = ConfigurationManager.ConnectionStrings["TCKT"].ConnectionString;

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    catch (Exception ex)
    {
        throw new Exception("An error has occurred" + ex);
    }
}
4

1 回答 1

2

可以使用SqlCommand.ExecuteNonQuery(),或使用Microsoft.SqlServer命名空间中的类。我在快速搜索中找到了这个:http ://forums.asp.net/t/1703608.aspx/1

但是,如果我是您,我会要求您进一步澄清您的要求。您需要动态创建 SP 似乎很奇怪。通常,如果需要,最好将它们设计为数据库的一部分,因为 SP 需要进行优化、调试等。

在相关的说明中,我在 c# 中运行了数据库更新脚本,它确实创建了存储过程作为更新数据库代码的一部分。如果您正在这样做,我建议您执行以下操作:

  1. 将整个数据库编写成一个.SQL文件。
  2. 使用 sqlcmd 实用程序针对您的本地服务器执行该文件。这可以通过System.Diagnostics.Process.Start()从 Web 应用程序调用并提供必要的命令行参数来完成。

需要注意的是,您的 Web 应用程序进程将需要启动 sqlcmd 进程的权限。或者作为替代方案,您可以使用SqlCommand该类并将 SQL 脚本的全部内容转储到一个字符串中,然后将其传递给命令。我想我也这样做了,而且奏效了。

于 2013-03-12T04:07:09.280 回答