2010-09-27 3 views
4

--Stored процедураКак передать значение хранимой процедуры с использованием C#

ALTER PROCEDURE [dbo].[Test]    
@USERID varchar(25)    

AS    
BEGIN     
SET NOCOUNT ON      
IF NOT EXISTS Select * from Users where USERID = @USERID)   
    BEGIN       
     INSERT INTO Users (USERID,HOURS) Values(@USERID, 0);     
    END 

У меня есть эта хранимая процедура в SQL Server 2005 и хотите передать идентификатор пользователя из C# приложения. Как мне это сделать. Большое спасибо.

+0

возможно дубликат [Как выполнить хранимую процедуру из C# программы] (http://stackoverflow.com/questions/1260952/how-to-execute-a-stored-procedure-from-c-program) –

+0

@John Fisher Мы поощряем вопросы, на которые можно ответить с помощью поиска Google. Таким образом, когда люди Google, авторитетный источник, такой как Stack Overflow, появляется вместо традиционных сотен форумов. –

+1

@George: Это имеет смысл, но разве вы не думаете, что MSDN достаточно авторитетна? –

ответ

8

Эта тема широко освещена в MSDN here. Смотрите раздел, озаглавленный «Использование параметров с SqlCommand и хранимой процедурой» для хорошего образца:

static void GetSalesByCategory(string connectionString, 
    string categoryName) 
{ 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     // Create the command and set its properties. 
     SqlCommand command = new SqlCommand(); 
     command.Connection = connection; 
     command.CommandText = "SalesByCategory"; 
     command.CommandType = CommandType.StoredProcedure; 

     // Add the input parameter and set its properties. 
     SqlParameter parameter = new SqlParameter(); 
     parameter.ParameterName = "@CategoryName"; 
     parameter.SqlDbType = SqlDbType.NVarChar; 
     parameter.Direction = ParameterDirection.Input; 
     parameter.Value = categoryName; 

     // Add the parameter to the Parameters collection. 
     command.Parameters.Add(parameter); 

     // Open the connection and execute the reader. 
     connection.Open(); 
     SqlDataReader reader = command.ExecuteReader(); 

     if (reader.HasRows) 
     { 
      while (reader.Read()) 
      { 
       Console.WriteLine("{0}: {1:C}", reader[0], reader[1]); 
      } 
     } 
     else 
     { 
      Console.WriteLine("No rows found."); 
     } 
     reader.Close(); 
    } 
} 
+0

Переполнение стека должно быть тем местом, где мы храним код; а не сторонний сайт, если это вообще возможно. Этот вопрос также является дубликатом другого вопроса: http://stackoverflow.com/questions/1260952/how-to-execute-a-stored-procedure-from-c-program –

+0

+1: Даже если бы я предпочел маленький пример. :-) – Patrick

+1

@George Stocker: Но ссылка, которую вы добавили, не имеет принятого ответа, а касается * вызова * хранимых процедур, а не передачи им аргументов. – Patrick

Смежные вопросы