通过C#创建存储过程

Dan*_* C. 6 c# sql-server-2008

我正在尝试在我的网络应用程序中创建一个种子数据库,我能够创建数据库,填充表格,我只是坚持让存储过程工作.这是我到目前为止,但我得到CREATE/ALTER PROCEDURE'必须是查询批处理中的第一个语句.\ r \n'GO'附近的语法不正确.我也尝试删除GO,并在USE语句和创建过程之间添加\ r \n,但没有运气.任何帮助,将不胜感激.

StringBuilder sbSP = new StringBuilder();
sbSP.AppendLine("USE [" + txtDBName.Text + "]");
sbSP.AppendLine("GO");
sbSP.AppendLine("CREATE PROCEDURE [spInsertADAuthorization] @AD_Account varchar(255),@AD_SID varchar(255),@AD_EmailAddress varchar(255),@DateImported datetime,@Active bit AS BEGIN SET NOCOUNT ON; INSERT INTO AD_Authorization (AD_Account, AD_SID, AD_EmailAddress, DateImported, Active) VALUES (@AD_Account,@AD_SID,@AD_EmailAddress,@DateImported,@Active) END");
sbSP.AppendLine("GO");
using (SqlConnection connection = new SqlConnection(ConnectionString))
    {

     using (SqlCommand cmd = new SqlCommand(sbSP.ToString(), connection))
                            {
                                connection.Open();
                                cmd.CommandType = CommandType.Text;
                                cmd.ExecuteNonQuery();
                                connection.Close();
                            }
                        }
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 6

"GO"是批处理分隔符.这不是T-SQL声明.删除"USE"和"GO"两行,然后重试.

  • 在执行代码之前,可以使用[`ChangeDatabase`](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.changedatabase.aspx)方法更改连接数据库吗?创建SP. (2认同)