C# 如何从C代码为SQL Server创建存储过程?
我正在尝试从一个C#winforms应用程序在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'";
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中有一个表,我想获取地址所在的行。