|
|
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 |
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()
|
|
|
Goto Forum:
Current Time: Mon May 06 03:15:48 CEST 2024
Total time taken to generate the page: 0.02436 seconds
|
|
|