您的位置:首页 > 运维架构 > Linux

Linux C 访问数据库操作

2008-04-24 14:48 726 查看
数据库:mysql

编程语言:c++

首先在创建数据表之前,检测硬盘空间是否足够。调用函数check_hd,返回值为0,则表明没有空间;返回值为1,则告警空间过低;返回值为2,则正常,可以进行数据库操作。
int check_hd()
{
char s[10];
int status =0;
FILE *fp;

system("du -hm -s /usr/local/mysql/var >du_temp");
fp=fopen("du_temp","r");
if (fp == NULL){
printf("fail to open du_temp !/n");
return -1;
}
fscanf(fp,"%s",s);
status = atoi(s);
fclose(fp);
if ( (status/fl_hd_capacity)*100 > n_hd_rate ){
printf("hd space used %d MB/n");
return 0;
}
else{
if(n_hd_rate>50){
if (((status/fl_hd_capacity)*100 <n_hd_rate )&&((status/fl_hd_capacity)*100 >(2*n_hd_rate-100) ))
{
return 1;
}
if((status/fl_hd_capacity)*100 <(2*n_hd_rate-100)){
printf("hd space used %d MB/n");
}
}
}//end else
return 2;
}

连接数据库
MYSQL *g_mysql=NULL;
g_mysql = mysql_init(0);
mysql_real_connect(g_mysql, mysql_ip, mysql_user_name, mysql_psd, mysql_db_name, 0, NULL, 0))

创建数据库表
#define CREATE_IPTV_TABLE "(`Id` int(11) NOT NULL AUTO_INCREMENT,/
`payload` blob,/
PRIMARY KEY (`Id`)/
)ENGINE=MyISAM AUTO_INCREMENT=8960925 DEFAULT CHARSET=binary ROW_FORMAT=FIXED;"
char CreateTable[2048];
sprintf(CreateTable, "%s%s%s", "CREATE TABLE ",/
mysql_table_name, CREATE_IPTV_TABLE);
mysql_query(g_mysql, CreateTable);

添加数据项目
char InsertTable[4096];
char Temp[256];
char Testdata[1024];
//假设Testdata保存二进制数据,为payload的内容。
char *end = NULL;
int count = 0
//假设count为id号
sprintf(Temp, "%s%s %s%05d,", /
"INSERT INTO ", mysql_table_name, /
"(Id,payload) VALUES(", count);
end = strcpy(InsertTable, Temp);
end += strlen(query);
*end++ = '/'';
end += mysql_real_escape_string(g_mysql, end, test_data, sizeof(test_data));
*end++ = '/'';
*end++ = ')';
mysql_real_query(g_mysql, InsertTable, (unsigned int) (end - InsertTable))

删除数据表
char DropTable[2048];
sprintf(DropTable, "%s%s%s", "DROP TABLE IF EXISTS ", mysql_table_name);
mysql_query(g_mysql, DropTable);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: