设为首页 收藏本站
查看: 625|回复: 0

[经验分享] Redhat C++连接Mysql数据库

[复制链接]

尚未签到

发表于 2018-5-13 13:29:29 | 显示全部楼层 |阅读模式
一、代码如下
#include "/usr/local/mysql/include/mysql/mysql.h"
#include <stdio.h>
int main(int argc,char *argv[])
{
char *user="root",*pwd="123456",*dbname="test";
MYSQL mysql;
MYSQL_RES *mysql_ret;
MYSQL_ROW row;
unsigned long num_rows;
int ret;
mysql_init(&mysql);
if(mysql_real_connect(&mysql,NULL,user,pwd,dbname,0,NULL,0))
{
printf("Connectionsuccess!\n");
mysql_query(&mysql,"set names 'latin1'");
ret=mysql_query(&mysql,"select * from sys_userinfo limit 5");
if(!ret)
{
printf("查询成功!");
mysql_ret=mysql_store_result(&mysql);
if(mysql_ret!=NULL)
{
num_rows=mysql_num_rows(mysql_ret);
if(num_rows!=0)
{
printf("%d\n",num_rows);
while(row=mysql_fetch_row(mysql_ret))
{
printf("%s\t%s\t%s\t%s\t%s\t%s\n",row[0],row[1],row[2],row[3],row[4],row[5]);
}
}
else
{
return -1;
}
mysql_free_result(mysql_ret);
return 0;
}
else
{
return -1;
}
}else{
return -1;
}
mysql_close(&mysql);
}else{
return -1;
}
}
g++ mysqlconn.c -o mysqlconn -lmysqlclient -L/usr/local/mysql/lib/mysql/
./mysqlconn
二、Mysql.h文件中mysql 的源码包中。
Libmysqlclient.so.15错误为ldconfig链接引用无加载libmysqlclient.so文件
Cd /etc/ld.so.conf.d
Vi mysql-i386.conf
加入/usr/local/mysql/lib/mysql代码OK。
三、Mysql C API
my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);//获取数据集行数
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);//获取数据集字段数
my_bool STDCALL mysql_eof(MYSQL_RES *res);
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
                          unsigned int fieldnr);
MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res);//根据字段循环数据集(字段名)
MYSQL_ROW    STDCALL mysql_fetch_row(MYSQL_RES *result);//根据行循环数据库集(从0开始的字段序号)
MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);
unsigned int STDCALL mysql_field_count(MYSQL *mysql);
my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql);//获取影响行数
my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql);//获取插入ID
unsigned int STDCALL mysql_errno(MYSQL *mysql);//错误号
const char * STDCALL mysql_error(MYSQL *mysql);//错误详细信息
const char *STDCALL mysql_sqlstate(MYSQL *mysql);
unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
const char * STDCALL mysql_info(MYSQL *mysql);
unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
const char * STDCALL mysql_character_set_name(MYSQL *mysql);
int          STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
MYSQL *        STDCALL mysql_init(MYSQL *mysql);//初始化
my_bool        STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
                      const char *cert, const char *ca,
                      const char *capath, const char *cipher);
const char *    STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
my_bool        STDCALL mysql_change_user(MYSQL *mysql, const char *user,
                      const char *passwd, const char *db);
MYSQL *        STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
                       const char *user,
                       const char *passwd,
                       const char *db,
                       unsigned int port,
                       const char *unix_socket,
                       unsigned long clientflag);//连接MYSQL
int        STDCALL mysql_select_db(MYSQL *mysql, const char *db);//切换数据库
int        STDCALL mysql_query(MYSQL *mysql, const char *q);//增,删,改,查
int        STDCALL mysql_send_query(MYSQL *mysql, const char *q,
                     unsigned long length);
int        STDCALL mysql_real_query(MYSQL *mysql, const char *q,
                    unsigned long length);
MYSQL_RES *     STDCALL mysql_store_result(MYSQL *mysql);
MYSQL_RES *     STDCALL mysql_use_result(MYSQL *mysql);
/* perform query on master */
my_bool        STDCALL mysql_master_query(MYSQL *mysql, const char *q,
                       unsigned long length);
my_bool        STDCALL mysql_master_send_query(MYSQL *mysql, const char *q,
                        unsigned long length);
/* perform query on slave */  
my_bool        STDCALL mysql_slave_query(MYSQL *mysql, const char *q,
                      unsigned long length);
my_bool        STDCALL mysql_slave_send_query(MYSQL *mysql, const char *q,
                           unsigned long length);
void        STDCALL mysql_get_character_set_info(MYSQL *mysql,
                           MY_CHARSET_INFO *charset);
更具体的可以查看mysql.h文件代码
四、查询出来的数据库在Redhat终端中显示乱码。有知道的博友麻烦赐教一下。谢谢!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459543-1-1.html 上篇帖子: Redhat5.4上的cacti和nagios的整合出现的问题 下篇帖子: RedHat下实现远程网络存储的共享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表