是否可以从C#执行SQL存储过程并为其提供要在INSERT INTO中使用的参数?

时间:2018-04-10 11:14:11

标签: c# sql stored-procedures

所以目前我试图围绕存储过程的概念,特别是在SQL中。我正在使用Microsoft SQL Server Manager Studio,并且已经尝试了一些基本的存储过程,我还找到了一种从C#代码执行存储过程的方法。但是:是否可以从C#调用存储过程,将特定变量作为参数提供,就像它是一个方法一样,让过程将这些变量写入列中(也就是在INSERT INTO中使用它们)?这可能吗?

1 个答案:

答案 0 :(得分:-1)

对于您的程序,存储过程只是数据库中的另一个对象,例如表或视图。它们的调用方式没有太大区别。

存储过程示例:

    connection = new SqlConnection
            {
                ConnectionString = ConfigurationManager.ConnectionStrings[DatabaseConnectionName].ConnectionString
            };
            connection.Open();
            //storedProcedureName is from your database
            command = new SqlCommand(@"[dbo].[storedProcedureName]", connection)                
            {
                CommandType = CommandType.StoredProcedure
            };
            //passing a parameter to the stored procedure
            command.Parameters.AddWithValue("@StudyID", khStudyId);

            reader = command.ExecuteReader();

从代码中调用SQL:

onnection = new SqlConnection(ConfigurationManager.ConnectionStrings[DatabaseConnectionName].ConnectionString);
            connection.Open();

            command = new SqlCommand(@"[dbo].[UserInformation]", connection)
            {
                CommandType = CommandType.Text
            };
            command.Parameters.AddWithValue("@StudyName", sponsorName);
            command.CommandText = @"select ID from [dbo].[Sponsors] where [Name] = @StudyName";

            reader = command.ExecuteReader();

            if (reader != null)
            {
                if (reader.Read())
                {
                    output = Convert.ToInt32(reader["ID"]);
                }
            }