首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > MySQL 5 C API 访问数据库例子程序
【标  题】:MySQL 5 C API 访问数据库例子程序
【关键字】:MySQL,API
【来  源】:http://blog.csdn.net/hzhxxx/archive/2006/06/24/829502.aspx

MySQL 5 C API 访问数据库例子程序


/*****************************************************************
以下是研究 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(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;
 }

 //先删除数据表
 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;


 //依次读取各条记录
 MYSQL_ROW currrow = NULL;
 while((currrow = mysql_fetch_row(result)) != NULL)
 {
  //读行的记录
  for(int i = 0; i < mysql_num_fields(result); ++i)
  {
   std::cout<<(currrow[i] ? currrow[i] : "NULL")<<"\t";
  }
  std::cout<<endl;
 }

 mysql_free_result(result) ;
 mysql_close(&mydata);

 system("pause");

 return 1;
}

ORACLE索引与高性能SQL介绍:【上一篇】
数据库设计范式---引用:【下一篇】
【相关文章】
  • Mysql安装手册
  • API技巧集
  • MySQL-python-1.2.0 安装
  • Mysql数学函数用法集锦[zt]
  • 如何改mysql的用户密码?
  • mysql_trip
  • MYSQL的主从
  • Mysql 数据库双机热备的配置
  • mysql 密码创建修改
  • MYSQL编码问题
  • 【随机文章】
  • 创造世界上最简单的------php开发模式 (三)
  • RCS用法之总结
  • SharePoint WebPart 用户控件包装器 Hands-On Labs
  • 搜索引擎优化概述(SEO)
  • 同济大学软件学院院长谈择业—关于嵌入式方向
  • Oracle 系统package
  • 第八章 模块和包
  • 2003+XP平台下的ADSL共享
  • 如何在使用SmartArray Raid控制器的机器上使用磁带机
  • 文档: 项目估计表
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.