/***************************************************************** 以下是研究 mysql 5.0 得出的结果,描述并使用标准 c 演示了使用 MySQL C API 函数 简单操作数据库的流程; 例子程式在 VC6 windows 2000 上调试通过 *****************************************************************/ #include <windows.h> #include <iostream> #include <mysql.h> //文档位于 MySQL 提供的 C API 目录中 using namespace std;
// linux 等系统中请加入 -lmysql #pragma comment( lib, "libmysql.lib")
/*****************************************************************/ ///name : main //function : 主测试函数 //access : private //para : // 1. : int argc // : 系统参数个数 // 2. : char * argv[] // : 参数数值 //return : 返回给 startup 函数的退出参数 //author : hzh //date : 2006-06-24 /*****************************************************************/ int main( int argc, char * argv[] ) { MYSQL mydata;
//初始化数据结构 if(mysql_init(&mydata) == NULL) { std::cout<<"init mysql data stauct fail"<<endl; return -1; }
//连接数据库 if(argc == 1) { if(NULL == mysql_real_connect(&mydata,"127.0.0.1","root","mysql5", "hzhdb",MYSQL_PORT,NULL,0)) { std::cout<<"connect database fail"<<endl<<mysql_error(&mydata)<<endl; return -1; } }else if(argc == 5) { if(NULL == mysql_real_connect(&mydata,argv[1], argv[2],argv[3],argv[4],MYSQL_PORT,NULL,0)) { std::cout<<"connect database fail"<<endl<<mysql_error(&mydata)<<endl; return -1; } } else { std::cout<<"run parameter error"<<endl; return -1; }
std::string s_sql = "drop table hzhtest"; if(mysql_query(&mydata,s_sql.c_str()) != 0) { //删除表失败 mysql_close(&mydata); std::cout<<"drop table fail"<<endl<<mysql_error(&mydata)<<endl; }
//创建数据表,字段 myid 配置了自增列属性 s_sql = "create table hzhtest("; s_sql = "myid integer not null auto_increment,"; s_sql = "mytime datetime null,myname varchar(30),"; s_sql = " primary key(myid))"; if(mysql_query(&mydata,s_sql.c_str()) != 0) { //创建表失败 mysql_close(&mydata); std::cout<<"create table fail"<<endl <<mysql_error(&mydata)<<endl; return -1; }
//向表中插入数据 for(int k = 1; k < 30; k) { s_sql = "insert into hzhtest(mytime,myname) values"; s_sql = "('2006-06-"; char buff[20]; memset(buff,0,sizeof(buff)); itoa(k,buff,10); s_sql = buff;
s_sql = " ";
int i = k % 3; memset(buff,0,sizeof(buff)); itoa(i,buff,10); s_sql = buff; s_sql = ":01:01'";
if(i == 0) { s_sql = ",NULL"; } else { s_sql = ",'黄志辉"; s_sql = buff; s_sql = "'"; } s_sql = ")";
if(mysql_query(&mydata,s_sql.c_str()) != 0) { //执行SQL语句出错 std::cout<<"execute insert syntax fail"<< endl<<mysql_error(&mydata)<<endl; mysql_close(&mydata) ; return -1; } }
//查询数据并显示 s_sql = "select myid,mytime,myname from hzhtest"; if(mysql_query(&mydata,s_sql.c_str()) != 0) { //执行SQL语句出错 mysql_close(&mydata); std::cout<<"execute sql syntax fail"<< endl<<mysql_error(&mydata)<<endl; return -1; }
MYSQL_RES *result = mysql_store_result(&mydata);
//取得查询结果 int rowcount = mysql_num_rows(result); //取得有效记录数 std::cout<<"exec sql: "<<s_sql.c_str()<<",row count: "<<rowcount<<endl;
MYSQL_FIELD *fields = NULL; //取得各字段名 for(int i = 0; fields = mysql_fetch_field(result); i) { std::cout<<fields->name<<"\t\t"; } std::cout<<endl;
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
| | 版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2007 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86263408 86263960 86264018 86267838 86262244 86263408 售前咨询:总机转201 202 203 204 205 206 207 208 售后服务:总机转211
212 213 214 217 218 晚上0点以后拔分机225 |
| 财务咨询:总机转224
223 传真:028-86264041 财务QQ: 635483282
售前咨询QQ: 327314358 241975952 275026793 408235859 2182518 499513144 售后服务QQ: 634349278 809071471 307742704 512359778 287976517 363783715 在线咨询
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号
|
|