Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ SQL » MySqlSession Close and Reconnect crashes Application (Reconnect crashes on newer Upp Version (CLANG) but works on older (Mingw))
Re: MySqlSession Close and Reconnect crashes Application [message #56041 is a reply to message #55764] Sun, 17 January 2021 21:30 Go to previous messageGo to previous message
hoelblin is currently offline  hoelblin
Messages: 4
Registered: November 2020
Location: Austria
Junior Member
Sorry for my late Reply and thanks for all Answers !

I had now time for testing so I have written a small GUI Testapplication where I can
CONNECT, DISCONNECT, RECONNECT, SELECT to a Mysql Database.

When I
CONNECT
SELECT
.....
.....
DISCONNECT
RECONNECT
SELECT
....

all works well, but with
CONNECT
SELECT
.....
.....
DISCONNECT
CONNECT
SELECT -> crashes in String0.isLarge


It is OK for me to use Reconnect but as Alboni and Mirek wrote Connect should also work.
So is still something wrong with my Connect Code ?

TheIDE 15596 from 2020-12-17 Windows with CLANG

Code of the Testapplication

mysqltest::mysqltest()
{
	CtrlLayout(*this, "Window title");
	
	acResult.AddColumn("Text");
	btConnect.WhenAction = THISBACK(mysqlConnect);
	btReConnect.WhenAction = THISBACK(mysqlReconnect);
	btDisconnect.WhenAction = THISBACK(mysqlDisconnect);
	btSelect.WhenAction = THISBACK(mysqlSelect);
	
	btConnect.Enable();
	btReConnect.Disable();
	btDisconnect.Disable();
	btSelect.Disable();
}

void mysqltest::mysqlConnect()
{
	if(session.Connect("user", "pw", "db", "localhost")) {
		SQL = session;
		
		btDisconnect.Enable();
		btSelect.Enable();
		btConnect.Disable();
		
		firstConnect = true;
	} else {
		Exclamation(session.GetLastError());
	}
}

void mysqltest::mysqlReconnect()
{
	if(!session.IsOpen()) {
		if(firstConnect) {
			if(session.Reconnect()) {
				SQL = session;
				
				btReConnect.Disable();
				btConnect.Disable();
				btSelect.Enable();
				btDisconnect.Enable();
				
				Exclamation("Reconnect succesfull!");
			} else {
				Exclamation(String() << "Reconnect failed with " << session.GetLastError());
			}
		} else {
			Exclamation("Use Connect first!");
		}
	}
}

void mysqltest::mysqlDisconnect()
{
	if(session.IsOpen()) {
		session.Close();
		
		acResult.Clear();
		
		if(!session.IsOpen()) {
			btConnect.Enable();
			btReConnect.Enable();
			btDisconnect.Disable();
			btSelect.Disable();
		
			Exclamation("Connection closed!");
		} else {
			Exclamation("Connection NOT closed!!!!!!!");
		}
	}
}

void mysqltest::mysqlSelect()
{
	if(session.IsOpen()) {
		
		try {
			Sql sql;
			sql.Execute("select name from names");
			
			if(sql.WasError()) {
				Exclamation(sql.GetLastError());
			} else {
				while(sql.Fetch()) {
					acResult.Add(sql[0]);
				}
			}
		} catch(SqlExc &ex) {
			Exclamation(ex);
		}
	} else {
		Exclamation("Database not opened!");
	}
}


GUI_APP_MAIN
{
	mysqltest().Run();
}


The Backtrace from the Debugger


Upp::String0::IsLarge() at C:\upp\uppsrc\Core\String.h 214
Upp::String0::Free() at C:\upp\uppsrc\Core\String.h 256
Upp::String0::Assign(s=) at C:\upp\uppsrc\Core\String.h 273
Upp::String::operator=(s=) at C:\upp\uppsrc\Core\String.h 376
Upp::Sql::SetStatement(s=) at C:\upp\uppsrc\Sql\Sql.cpp 105
Upp::Sql::Execute(s=) at C:\upp\uppsrc\Sql\Sql.cpp 166
mysqltest::mysqlSelect() at C:\upp\MyApps\mysqltest\main.cpp 83
Upp::callback<mysqltest,mysqltest>::<unnamed-tag>::operator()() at C:\upp\uppsrc\Core\CallbackNP.i 38
Upp::Function<void ()>::Wrapper<`lambda at C:\upp/uppsrc\Core/CallbackNP.i:38:17'>::Execute() at C:\upp\uppsrc\Core\Function.h 17
Upp::Function<void ()>::operator()() at C:\upp\uppsrc\Core\Function.h 76
Upp::Ctrl::Action() at C:\upp\uppsrc\CtrlCore\Ctrl.cpp 474
Upp::Pusher::PerformAction() at C:\upp\uppsrc\CtrlLib\Button.cpp 17
Upp::Pusher::FinishPush() at C:\upp\uppsrc\CtrlLib\Button.cpp 101
Upp::Pusher::LeftUp() at C:\upp\uppsrc\CtrlLib\Button.cpp 58
Upp::Ctrl::MouseEvent(event=145, p=, zdelta=0, keyflags=0) at C:\upp\uppsrc\CtrlCore\CtrlMouse.cpp 169
Upp::Ctrl::MouseEvent0(event=145, p=, zdelta=0, keyflags=0) at C:\upp\uppsrc\CtrlCore\CtrlMouse.cpp 92
Upp::Ctrl::MouseEventH(event=145, p=, zdelta=0, keyflags=0) at C:\upp\uppsrc\CtrlCore\CtrlMouse.cpp 110
Upp::Ctrl::MEvent0(e=145, p=, zd=0) at C:\upp\uppsrc\CtrlCore\CtrlMouse.cpp 337
Upp::Ctrl::DispatchMouseEvent(e=145, p=, zd=0) at C:\upp\uppsrc\CtrlCore\CtrlMouse.cpp 598
Upp::Ctrl::DispatchMouse(e=145, p=, zd=0) at C:\upp\uppsrc\CtrlCore\CtrlMouse.cpp 588
Upp::Ctrl::DoMouse(e=145, p=, zd=0) at C:\upp\uppsrc\CtrlCore\Win32Wnd.cpp 571
Upp::Ctrl::WindowProc(message=514, wParam=0, lParam=5046318) at C:\upp\uppsrc\CtrlCore\Win32Proc.cpp 136
Upp::TopWindow::WindowProc(message=514, wParam=0, lParam=5046318) at C:\upp\uppsrc\CtrlCore\TopWin32.cpp 70
Upp::Ctrl::WndProc(hWnd=302bc, message=514, wParam=0, lParam=5046318) at C:\upp\uppsrc\CtrlCore\Win32Wnd.cpp 674
CallWindowProcW()
DispatchMessageW()
Upp::Ctrl::sProcessMSG(msg=) at C:\upp\uppsrc\CtrlCore\Win32Wnd.cpp 770
Upp::Ctrl::ProcessEvent(quit=171e47f) at C:\upp\uppsrc\CtrlCore\Win32Wnd.cpp 794
Upp::Ctrl::ProcessEvents(quit=171e47f) at C:\upp\uppsrc\CtrlCore\Win32Wnd.cpp 808
Upp::Ctrl::EventLoop(ctrl=171e5e8) at C:\upp\uppsrc\CtrlCore\Win32Wnd.cpp 840
Upp::TopWindow::Run(appmodal=0) at C:\upp\uppsrc\CtrlCore\TopWindow.cpp 324
GuiMainFn_() at C:\upp\MyApps\mysqltest\main.cpp 103
Upp::AppExecute__(app=1400022e0) at C:\upp\uppsrc\Core\App.cpp 442
WinMain(hInstance=140000000, lpCmdLine=17cf286 "", nCmdShow=10) at C:\upp\MyApps\mysqltest\main.cpp 101
WinMainCRTStartup()
WinMainCRTStartup()
BaseThreadInitThunk()
RtlUserThreadStart()

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Some queries return incorrect datatypes with SqLite
Next Topic: Sql object
Goto Forum:
  


Current Time: Mon May 06 03:15:48 CEST 2024

Total time taken to generate the page: 0.02436 seconds