如何从c#代码中为SQL Server创建存储过程
本文关键字:SQL Server 创建 存储过程 代码 | 更新日期: 2023-09-27 18:04:39
我正在尝试从c# winforms应用程序创建SQL服务器中的存储过程。这是我目前使用的函数
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();
}
}
感谢!:)
创建存储过程时不需要EXEC并且需要一个活动连接
您可以尝试:
command.CommandType = CommandType.StoredProcedure;
初始化命令的连接属性:
command.Connection = connection;
或者,您可以使用公共语言运行时集成来创建存储过程,而不是在运行中创建存储过程。
如何使用公共语言运行时集成创建和运行SQL Server存储过程
将CLR存储过程部署到数据库
在上面的尝试中,代码只能作为一次性运行,因为它包含一个CREATE命令。然后必须将其更改为ALTER,否则每次都需要删除它并重新创建。这可能不是最佳实践,但请记住。
您需要定义一个连接对象并将其与命令对象链接
CommandObject.Connection= ConnectionObject;
也是CommandType。默认为文本。
还可以使用
检查连接是否打开 if(ConnectionObject.State== ConncetionState.Closed)
{
ConnectionObject.Open();
}
如果它是关闭的,您将需要一个活动的Open连接来传递查询。