Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

There is already an open DataReader associated with this Connection which must be closed first.

Featured Replies

Здравейте! There is already an open DataReader associated with this Connection which must be closed first. това е грешката която получвам, колеги някой има ли идея къде може да търпся проблема. :(

  • Автор

Ами става въпро за програма свързана с MySQL и трябва да се затвори DataReader, за да се отвори нов, но някъде изпускам нещо и не мога да го намеря... 

  • Автор
преди 3 часа, bvbfan написа:

Дай кода :)

Радвам се, че някой така писа :) Пращам го:

Става въпрос за .NET (C#) - Open Source за една игра :) Дано да успеете да откриете проблема, защото стана много време не мога да го открия :( Според мен проблемът е някъде в RemoveFromconnectionsList или в SqlInfo.UpdateUser там се получва проблема... :( 

        // A client left the server.
        private void CNL_ClientLeavesHost(Packets.IS_CNL CNL)
        {
            try
            {
                if ((Connections[GetConnIdx(CNL.UCID)].PitOK == 0) && (CNL.Reason != Enums.CNL_Reason.LEAVR_TIMEOUT) && (CNL.Reason != Enums.CNL_Reason.LEAVR_LOSTCONN))
                {
                    InSim.Send_MST_Message("/msg ^6| ^7 ^1" + Connections[GetConnIdx(CNL.UCID)].PlayerName + " fined Ј100 for spectating on track");
                    Connections[GetConnIdx(CNL.UCID)].Cash -= 100;
                }

                if (AccountReset == false)
                {
                    SqlInfo.UpdateUser(Connections[GetConnIdx(CNL.UCID)]);
                }
                if (AccountReset == true)
                {
                    AccountReset = false;
                }

                RemoveFromConnectionsList(CNL.UCID);		// Update Connections[] list
            }
            catch (Exception EX)
            {
                //messagebox.show("CNL - " + EX.Message);
            }
        }

 

  • Автор

Прикачвам целият .cs за MySQL. :) 

RemoveFromConnectionsList - Когато даденият играч (user) напусне сървъра той бива изключен от MySQL и така статусът му бива запазен, но пробелмът е следният. Когато той напусне остава отворен и го показва в игра, което ще рече, че ако реши да влезе отново сървъра го показва Online = 1 и бива изхвърлен от сървъра :)

Консултирах се с още едно момче и ми каза, че възможно проблемът да идва от dr.Close

SQL.cs

Редактирано от D101149 (преглед на промените)

Но пак не даваш какво прави RemoveFromConnectionsList. Виж ся ква е работата:

if (AccountReset == false)
{
SqlInfo.UpdateUser(Connections[GetConnIdx(CNL.UCID)]);
}
if (AccountReset == true)
{
AccountReset = false;
}

AccountReset първо е true ти не ъпдейтваш юзър инфото, след това го слагаш на false и RemoveFromConnectionsList махаш ID от Connections, вторият път AccountReset е false, но ти не може да извикваш UpdateUser, защото Connections ще ти върне невалидвана конекция, след това се мъчиш да пишеш в MySQL-а с нея.

 

  • Автор

реших да го затовяр този код,  но отново дава грешка..

/*if (AccountReset == false)
{
SqlInfo.UpdateUser(Connections[GetConnIdx(CNL.UCID)]);
}
if (AccountReset == true)
{
AccountReset = false;
}
*/

 

  • Автор
преди 7 минути, bvbfan написа:

Значи е другаде, я коментирай долният ред RemoveFromConnectionsList

Служи за: когато има свързан потребил със InSim-а този RemoveFromConnectionsList го изключва, когато играчът напусне сървъра

  • Автор

Проблемът е оправен! Пробелът беше една променлива Online в моят случай служеше ако бъде изключен и включен инсима да въвежда играчите в режим 1 (режим 0 означава, че не са в сървъра, 1 че са), но когато махнах го и проблемът е решен. Видях, че в таблица изписва числа от рода на 9,5,6 не знам защо а не само 0 и 1 както и да е фиксант е благодаря на bvbfan че отдели от времето си и ми помогна :)

 

П.П и същевременно изключих това, за което си писахме горе относно AccountReset :) 

Редактирано от D101149 (преглед на промените)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.