powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ADO.NET Возвращается неверный результат запроса
2 сообщений из 2, страница 1 из 1
ADO.NET Возвращается неверный результат запроса
    #38904404
Фотография anc32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 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);
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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;
        }


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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)
Код: sql
1.
exec GetPrivateMessagesAuthorsCount 2,1

выдаёт 3. В чём может быть проблема и как исправить?
...
Рейтинг: 0 / 0
ADO.NET Возвращается неверный результат запроса
    #38904486
Фотография anc32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка была в строке par.Value = CompanionId; - надо заменить на par1.Value = CompanionId;.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ADO.NET Возвращается неверный результат запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]