惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
P
Proofpoint News Feed
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
A
About on SuperTechFans
T
Tenable Blog
M
MIT News - Artificial intelligence
IT之家
IT之家
I
Intezer
D
DataBreaches.Net
爱范儿
爱范儿
T
Threatpost
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AWS News Blog
AWS News Blog
博客园 - 聂微东
C
Check Point Blog
S
Securelist
有赞技术团队
有赞技术团队
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
D
Docker
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
L
Lohrmann on Cybersecurity
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog

博客园 - uu.Net

修改originate使chan_ss7信令传递原被叫 chan_ss7源码分析 chan_ss7中原被叫号码的传递 oracle循环插入数据用于测试 ORA-12154: TNS: 无法解析指定的连接标识符 使用windows route命令来控制双网卡,双网络访问 JVM优化引起的逻辑错误 box & unbox scribefIre试用手记 mysql长连接和短连接的问题 tomcat入门 Tomcat5部署 logrotate---日志轮转 关于gcc的include问题 Centos 时间同步 How to create a gun c/c++ project modules的管理 asterisk上加载G729 codec FTP的主动和被动模式
MySQL C API的一次调用体验
uu.Net · 2009-05-26 · via 博客园 - uu.Net

Mysql提供了标准的c API,

要引用进去,需要安装mysql-devel包,在centos下,我直接yum install mysql-devel,结果恰好应为重新设置过yum源,下载过程中总是提示GPG key error;google的结果是:如果你的YUM是透过代理来访问CentOS的更新源的话,有可能出现如下错误:
GPG key retrieval failed ...
原因可能是GPG key文件中有一些http协议中的控制字符。
其实,你可以在某一个更新源上下载一个RPM-GPG-KEY-CentOS
# wget http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5
# rpm --import RPM-GPG-KEY-CentOS-5

运行后,果然非常OK了,安装完mysql-devel后,在/usr/include/mysql下可发现mysql的头文件,/usr/lib/mysql下可以发现mysql的库文件;这是我们编译和连接所需要的。

用mysql数据库自带的test数据库来测试一下吧:

首先我在mysql的test库中创建了一个table T1 ;

create table T1(id int(11) default NULL, name varchar(100) default NULL);

插入两条临时数据:

insert into T1 (id,name) values(“1001”,“the grade is good!”);

insert into T1 (id,name) values(“1002”,  “the grade is good also!”);

查看表结构:

desc T1;

或者show columns from t1;

接下来我们来使用轮子吧,大概是嘲讽吧,大家都喜欢把类库称为轮子,这个轮子真有点大,我们来看下吧!

#include <mysql.h>
#include <stdio.h>
#include <string.h>

int main() {

MYSQL mysql; //need a instance to init
MYSQL_RES *res;
MYSQL_ROW row;
char *query;
int t,r;
//connect the database
mysql_init_($mysql);
if(!mysql_real_connect(&mysql,"localhost","","","test",0,NULL,0))
{
   printf("Error connecting to database:%s\n", mysql_error($mysql));
}
else
printf("Connected ..\n");
//get the result from the executing select query
query = "select * from t1";
t = mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
  printf("Error making query:%s\n",mysql_error(&mysql);
}
else
printf("[%s] made..\n",query);
res = mysql_store_result(&mysql);
while(row = mysql_fetch_row(res))
{
   for(t=0;t<mysql_num_fields(res);t++)
   {
    printf("%s",row[t]);
    }
    printf("\n");
}

printf("mysql_free_result...\n");
mysql_free_result(res);//free result after you get the result
sleep(1);

mysql_close(&mysql);

return 0;
}

期间当然出来不少问题了,比如mysql的实例是一个引用变量,常常会忽略,或者误写为%,还有,strlen函数从属于string.h的头文件,我一直误认为是在stdio.h中,呵呵,手生的很呢

最重要的时候到了,呵呵,自然是要mysql的库文件和头文件了;

gcc testsql.c -I/usr/include/mysql -L/usr/lib/mysql –lmysqlclient

如果不出意外,当然,我是指天塌下来,应该是能顺利编译通过的;

运行的话,当然会打印记录喽;