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);
编程语言: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);
相关文章推荐
- 因为数据库正在使用,所以未能获得对数据库的排它访问权。RESTORE DATABASE 操作异常终止。
- 建立JSP操作以提高数据库访问的效率
- 使用XAMPP可视化管理Mysql,使用JDBC访问数据库执行插入、查询、删除等操作
- C#以操作数据库方式访问EXCEL文件的几个常见问题及解决方法
- VS2010添加类失败问题,弹出错误框,提示 CodeModel操作失败,无法访问标记数据库
- 关于HSQLDB访问已有数据库文件的操作说明
- 利用JDBC连接Mysql访问数据库完成增删改查操作
- C++ 访问操作跨平台数据库Sqlite
- PDO访问其他数据库操作及作用
- mysql创建新用户并授权访问操作该数据库
- XE5 ANDROID通过webservice访问操作MSSQL数据库
- 数据库防火墙——实现数据库的访问行为控制、危险操作阻断、可疑行为审计
- 建立JSP操作以提高数据库访问的效率
- android 模拟器访问现有数据库操作。
- .net core下配置访问数据库操作
- 如何简化数据库的访问与操作,兼谈泛型的应用
- DotNet访问和操作数据库
- MongoDB 数据库操作(九)-访问控制
- c#数据操作:数据库访问 和 文件操作
- 7.27--SSH学习之SpringMVC,Ajax请求、拦截器、文件上传和MyBatis访问数据库基本操作