我使用的是Windows 10 Visual Studio 2015。
好吧,不管怎样,这是我的代码,我得到了这个错误:
uninitialized local variable 'driver'
我只是在遵循MySQL主网站上的一个教程(示例),这似乎发生了,所以有人能解释为什么要这样做吗?或者告诉我一个修复方法。:)我试着让它保持静态,直到我点击按钮,它才通过,然后我收到了一条无效的写入内存消息。希望这足以让你告诉我发生了什么。
LRESULT CALLBACK WndProc(...)
{
...
switch (LOWORD(wparam))
{
case SQL_BUTTON_LAUNCH:
using namespace sql;
Driver *driver;
Connection *con;
Statement *stmt;
ResultSet *res;
con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
con->setSchema("test");
stmt = con->createStatement();
res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
delete res;
delete stmt;
delete con;
//SQLConnection();
break;
}
}
您需要添加
driver = get_driver_instance();
在调用之前
driver->connect (..)
否则,Driver *driver;
只声明一个指针。不会为其分配有效值。因此,通过它调用connect(..)
会取消引用该指针,从而导致未定义的行为。未定义行为的一个特殊情况是问题中提到的内存访问违规错误。
当调用get_driver_instance ()
时,它会执行获取有效指针所需的步骤并返回该指针,然后您可以使用该指针进行连接。