Лучший отвечающий
ADO.NET

Вопрос
-
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
Ответы
-
Ошибка была тут
par.Value = CompanionId;
Надо
par1.Value = CompanionId;
- Помечено в качестве ответа Энтомолог 14 марта 2015 г. 16:01
14 марта 2015 г. 16:01
Все ответы
-
Вы пробовали смотреть, какой реально запрос улетает в mssql и/или ставить breakpoint на
o = await cmdIdsCount.ExecuteScalarAsync();
? Чему равно o?- Изменено Roman Sergeev 13 марта 2015 г. 21:22
13 марта 2015 г. 21:21 -
Ошибка была тут
par.Value = CompanionId;
Надо
par1.Value = CompanionId;
- Помечено в качестве ответа Энтомолог 14 марта 2015 г. 16:01
14 марта 2015 г. 16:01