我正在使用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;
}
}
答案 0 :(得分:4)
您需要添加
driver = get_driver_instance();
之前打电话
driver->connect (..)
否则,Driver *driver;
只是声明一个指针。
它不会分配有效值。
因此,通过它调用connect(..)
取消引用此指针,这反过来导致未定义的行为。
未定义行为的特定情况是问题中提到的内存访问冲突错误。
当调用get_driver_instance ()
时,它会执行获取有效指针所需的步骤并将其返回,然后您可以将其用于连接。