C# 如何从C代码为SQL Server创建存储过程?

C# 如何从C代码为SQL Server创建存储过程?,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,我正在尝试从一个C#winforms应用程序在SQL server中创建一个存储过程。 这是我到目前为止的功能 public void CreateStoredProcedure(string SPname) { try { string query = "CREATE PROCEDURE " + SPname + " AS SELECT * FROM People WHERE Address='Mumbai'";

我正在尝试从一个C#winforms应用程序在SQL server中创建一个存储过程。 这是我到目前为止的功能

public void CreateStoredProcedure(string SPname)
{
        try
        {
            string query = "CREATE PROCEDURE " + SPname + " AS SELECT * FROM People WHERE Address='Mumbai'";
            connection.Open();
            var command = new SqlCommand();
            command.CommandType = CommandType.Text;
            command.CommandText = "EXEC " + query;
            command.ExecuteNonQuery();
        }

        finally
        {
            connection.Close();
        }
}
我这样做对吗?每次尝试实现此目标时,我都会收到一条错误消息

嘿,非常感谢大家!!现在可以工作了。。 这就是最终实现它的代码

 public void CreateStoredProcedure(string SPname)
    {
        try
        {
            string query = "CREATE PROCEDURE " + SPname + " AS SELECT * FROM People WHERE Address='Mumbai'";
            connection.Open();
            var command = new SqlCommand();
            command.Connection = connection;
            command.CommandText = query;
            command.ExecuteNonQuery();
            var adapter = new SqlDataAdapter(command);
            adapter.Fill(dt);
            dgv.DataSource = dt;
        }

        finally
        {
            connection.Close();
        }
    }

非常感谢!:)

初始化命令的连接属性:

            command.Connection = connection;

创建存储过程时不需要EXEC
您需要一个活动连接

或者,您可以使用公共语言运行时集成来创建存储过程,而不是动态地创建存储过程

在上面的尝试中,代码将只能一次性运行,因为它包含CREATE命令。然后它必须在那里更改,否则每次都需要删除它并重新创建。这不是最佳做法,请记住。

您可以尝试:

 command.CommandType = CommandType.StoredProcedure;

您需要定义连接对象并将其与命令对象链接

    CommandObject.Connection= ConnectionObject;
默认情况下,CommandType.Text也是

您还可以使用检查连接是否打开

    if(ConnectionObject.State== ConncetionState.Closed)
       {
        ConnectionObject.Open();
        }

如果它已关闭,您将需要一个活动的打开连接来传递查询。

错误消息是什么?默认情况下,
CommandType.Text
是。哦,是的,“SPname”是我试图创建的存储过程的名称。“ExecuteOnQuery:连接属性尚未初始化。”使用
command.Connection=Connection。您没有将
SqlCommand
SqlConnection
连接。每次我尝试更改代码时,都会收到不同的错误消息。我在SQL server中有一个表,我想获取地址所在的行。