自定义MySQL函数类
Custom MySQL functions Class
我开始开发一个类,该类包括我的项目(游戏服务器)需要的许多函数重组公共mysql任务。
现在我正在学习如何将mysql与C++结合使用
在尝试将这个类构建为共享库(在linux下)时,我遇到了一个错误,它是..
error: ‘connect’ was not declared in this scope
所以。。它发生在函数checklogin()
中,当然我有点理解它的意思,问题是这个connect
是在我在同一个库中创建的另一个函数connectdb()
中声明的。我试着重复指针的事情,但当我输入checklogin
函数时,它会导致我出现seg错误(seg错误实际上来自mysql库,来自调试器所说的),所以我认为这可能不是正确的方法(或者是吗?)
无论如何,我想知道这个问题有什么可能的解决方案,再次指向connect
?或者管理该指针被另一个函数检测到这是代码。。。(顺便说一句,函数代码几乎是从本教程中复制/粘贴的http://www.nitecon.com/tutorials-articles/develop/cpp/c-mysql-beginner-tutorial/)
sssql.cpp
#include "sssql.h"
sssql::sssql()
{
//ctor
}
sssql::~sssql()
{
//dtor
}
bool sssql::checklogin(std::string, std::string)
{
MYSQL *connect;
MYSQL_RES *res_set;
MYSQL_ROW row;
mysql_query(connect,"SELECT * FROM account");
unsigned int i = 0;
res_set = mysql_store_result(connect);
unsigned int numrows = mysql_num_rows(res_set);
while ((row = mysql_fetch_row(res_set)) != NULL)
{
printf("%sn",row[i] != NULL ?
row[i] : "NULL");
}
}
bool sssql::connectdb()
{
MYSQL *connect;
connect=mysql_init(NULL);
if(!connect)
{
printf("MySQL Initialization Failed");
return 1;
}
connect=mysql_real_connect(connect,SERVER,USER,PASSWORD,DATABASE,0,NULL,0);
if(connect){
printf("Connection Succeededn");
}
else{
printf("Connection Failed!n");
}
}
sssql.h
#ifndef SSSQL_H
#define SSSQL_H
#include "mysql.h"
#define SERVER "localhost"
#define USER "root"
#define PASSWORD "password"
#define DATABASE "database"
#include <stdio.h>
#include <string>
class sssql
{
public:
sssql();
virtual ~sssql();
// Check login info
std::string usrcheck;
std::string passwd;
bool connectdb();
bool checklogin(std::string, std::string);
protected:
private:
};
#endif // SSSQL_H
connect
的问题是在connectdb
函数中创建它,因为它是一个局部变量,所以一旦connectdb
返回connect
就会被销毁。当你在checklogin()
中重新声明它时,你实际上是在创建一个单独的变量,上帝只知道其中可以存储什么,然后你试图用它来与MySQL通信,但这是行不通的。
您应该做的是将connect
声明为私有类成员:
class sssql
{
private:
MySQL *connect;
....
};
这将使它在类中声明的所有函数的作用域中。您可以在构建过程中实例化它,也可以选择在connectdb()
等单独的函数中实例化它。但在你继续之前,我强烈建议你阅读同一网站上的可变范围和其他教程。
附言:还有一个建议是不要将变量命名为connect
,因为在同一名称下有几个库中的函数。
- "error: no matching function for call to"构造函数错误
- 在MySql中使用字符串操作函数有什么问题
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- 在 mysql 连接器中对 mysqlx 函数的未定义引用
- C++函数在MySQL中make_scrambled_password到MariaDB
- MySQL 用户在 C++ 中定义了函数
- mysql C 连接器函数在类中定义时不起作用
- C++ MySQL,使用在同一类内的另一个函数中的一个函数中建立的连接
- 当程序遇到故障时,如何在信号处理函数中写入日志和上传日志到MYSQL
- 为什么 mysql 函数在 c++ 中返回值 -1
- 我可以在mysql查询中调用一个函数吗
- 自定义MySQL函数类
- 使用mysql本机函数进行字节顺序转换
- Cpp-Mysql 未定义对"函数"错误的引用
- C++函数式和泛型编程[使用MySQL连接器示例]
- 在Mac OS X上共享一个c++库,这样我就可以在mySQL中添加用户定义的函数
- 如何在QT中使用MySQL count()函数
- 是否有可能在c++代码中从mysql函数返回连接对象?
- 使用c++和函数_main中引用的[ERROR]未解析的外部符号_mysql_error@4连接mysql
- MySQL连接函数崩溃