Linux下使用C/C 访问数据库——MySQL篇
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-17
n; } mysql_init(&mySQLClient);// 初始化相关对象 if ( !mysql_real_connect( &mySQLClient, HOSTS, USERNAME, PASSWORD, DBNAME, DEFAULTPORT, NULL, 0) ) {// 连接到服务器 std::cout << "Error connection to database: %sn" << mysql_error(&mySQLClient) << std::endl; } IsConnected = true;// 修改连接标识 } bool MySQLManager::runSQLCommand(string sql) { if ( !IsConnected ) {// 没有连接到服务器 std::cout << "Not connect to database!" << std::endl; return false; } if ( sql.empty() ) {// SQL语句为空 std::cout << "SQL is null!" << std::endl; return false; } MYSQL_RES *res; MYSQL_ROW row; unsigned int i,j = 0; StringTools stringTools; sql = stringTools.filterString(sql); i = mysql_real_query(&mySQLClient,sql.c_str(),(unsigned int)strlen(sql.c_str()));// 执行查询 if ( i ) { std::cout << "Error query from database: %sn" << mysql_error(&mySQLClient) << std::endl; return false; } res = mysql_store_result(&mySQLClient); vector<string> objectValue; while( (row = mysql_fetch_row(res)) ) {// 遍历结果集 objectValue.clear(); for ( j = 0 ; j < mysql_num_fields(res) ; j ) { objectValue.push_back(row[j]); } this ->resultList.push_back(objectValue); } mysql_free_result(res); //free result after you get the result return true; } vector< vector<string> > MySQLManager::getResult() { return resultList; } void MySQLManager::destroyConnection() { mysql_close(&mySQLClient); this ->IsConnected = false; } bool MySQLManager::getConnectionStatus() { return IsConnected; } 三、修改建议 本人在以后的完善中,打算把runSQLCommand(char * sql)函数分解成两个或者三个函数,分别执行select和insert等语句. 在程序中,我并没有强制要求参数为const,可能会出现一些安全问题. 本文仅起抛砖引玉的作用,希望有高手可以指点我程序中的问题.敬请期待下一篇文章:Linux下使用C/C 访问数据库——SQL Server篇 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: Embedded Linux Primer学习笔记下一篇: linux下find用法
关于Linux下使用C/C 访问数据库——MySQL篇的所有评论