none
ADO.NET RRS feed

  • Вопрос

  • using (var SqlCon = await Connection.GetConnection())
                {
                    int count;                
                    object o = null;
    
                    using (var cmdIdsCount =
                        Command.InitializeCommandForInputIds
                            (@"GetPrivateMessagesAuthorsCount",
                                SqlCon, companionId,accountId))
                    {//тут companionId=2,accountId=1
                        o = await cmdIdsCount.ExecuteScalarAsync();
                    }
    if (o == DBNull.Value || o == null)
                        count = 1;
                    else
                        count = Convert.ToInt32(o);
    }
    internal static SqlCommand InitializeCommandForInputIds
               (string Function, SqlConnection SqlCon, int CompanionId, int AccountId)
            {
                SqlCommand cmd = new SqlCommand(Function, SqlCon);//тут CompanionId=2,AccountId=1 и ConnectionState=Open
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter par = cmd.Parameters.Add(AccountIdParameter, SqlDbType.Int);
                par.Value = AccountId;
                SqlParameter par1 = cmd.Parameters.Add(CompanionIdParameter, SqlDbType.Int);
                par.Value = CompanionId;
                cmd.CommandTimeout = CmdTimeout;
                cmd.Prepare();
    
                return cmd;
            }
    create table PrivateMessage
    (
    	Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    	SenderAccountId INT NOT NULL DEFAULT 1,
    	AcceptorAccountId int NOT NULL DEFAULT 1,
    	PrivateText NVARCHAR(1000) NOT NULL DEFAULT N'Сообщение'	
    );
    insert into PrivateMessage values (1,2,N'Первое'),
    (2,1,N'Второе'),
    (1,2,N'Третье');
    go
    CREATE PROCEDURE GetPrivateMessagesAuthorsCount(@AccountId int=1, @CompanionId int=2)
    AS 
    BEGIN	
    set nocount off;
    	select count(Id)
    	from PrivateMessage 
    	where ((SenderAccountId=@AccountId and AcceptorAccountId=@CompanionId)
    	or (SenderAccountId=@CompanionId and AcceptorAccountId=@AccountId));
    	
    end
    go

    Почему-то при запросе в базу из программы count всегда=0 (o=0)
    exec GetPrivateMessagesAuthorsCount 2,1

    выдаёт 3. В чём может быть проблема и как исправить?

    13 марта 2015 г. 15:50

Ответы

Все ответы