国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL 5 C API 訪問數據庫例子程序

2024-07-25 19:09:43
字體:
來源:轉載
供稿:網友
/*****************************************************************
以下是研究 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;


 //依次讀取各條記錄
 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;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上思县| 祁东县| 平昌县| 安化县| 凌云县| 万安县| 北川| 古丈县| 孟村| 安吉县| 贡嘎县| 铜山县| 沈丘县| 湖口县| 惠州市| 浦北县| 德化县| 阿拉善盟| 龙门县| 涞水县| 南皮县| 博兴县| 泽普县| 焦作市| 绍兴县| 门头沟区| 怀宁县| 南和县| 宁乡县| 隆林| 仙游县| 东至县| 万山特区| 武川县| 广汉市| 集贤县| 图们市| 普定县| 平罗县| 阳谷县| 安溪县|