未初始化的局部变量(变量是类中的对象) - MYSQL

时间:2015-10-28 22:54:18

标签: c++ object winapi

我正在使用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;
                    }

    }

1 个答案:

答案 0 :(得分:4)

您需要添加

driver = get_driver_instance();

之前打电话

driver->connect (..)

否则,Driver *driver;只是声明一个指针。 它不会分配有效值。 因此,通过它调用connect(..)取消引用此指针,这反过来导致未定义的行为。 未定义行为的特定情况是问题中提到的内存访问冲突错误。

当调用get_driver_instance ()时,它会执行获取有效指针所需的步骤并将其返回,然后您可以将其用于连接。