window系统,c语言如何连接mysql数据库?

亚细亚 2008-12-09 07:22:06
在window系统下,c语言如何连接mysql数据库?
...全文
352 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
亚细亚 2008-12-09
  • 打赏
  • 举报
回复
谢谢!
majun01 2008-12-09
  • 打赏
  • 举报
回复
1.准备库文件等,这些库文件有:
my_alloc.h
my_list.h
mysql.h
mysql_com.h
mysql_time.h
mysql_version.h
typelip.h
libcd.lib
libcpd.lib
libmysql.lib
libmysql.dll

2.把准备好的文件拷贝你的工程目录下,和普通的CPP文件在同一个目录即可
3.载入动态链接库:
在c程序的前部#pragma comment( lib, "libmysql.lib")
或者:对于vc6.0,添加动态连接库的方式:
“项目”->“设置”->“连接”,在“连接”的“对象/库模块”的最后添加: libmysql.lib就可以了
或者:对于vc2008,添加动态连接库的方式:
右击要添加动态连接库的项目,选择
“属性”->”配置属性”->“链接器”->”输入”,在输入项的“附加依赖项”中输入: libmysql.lib就可以了

4.使用MySQL的API连接数据库,看看下面的例子,包括数据库的连接和基本操作的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(argc == 1)
{
if(NULL == mysql_real_connect(&mydata,"localhost","root","mj",
"my_text",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)
{//(currrow ? currrow : "NULL")
std::cout<<"NULL"
<<"\t";
}
std::cout<<endl;
}


mysql_free_result(result) ;
mysql_close(&mydata);

system("pause");

return 1;
}
majun01 2008-12-09
  • 打赏
  • 举报
回复
http://blog.csdn.net/jemlee2002/archive/2007/03/07/1523164.aspx
lann64 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yaxiya 的回复:]
引用 1 楼 lann64 的回复:
调用mysql的API

我不太了解。有具体了例子吗?
[/Quote]http://dev.mysql.com/doc/refman/5.1/zh/apis.html
亚细亚 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lann64 的回复:]
调用mysql的API
[/Quote]
我不太了解。有具体了例子吗?
nullah 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lann64 的回复:]
调用mysql的API
[/Quote]
学习
lann64 2008-12-09
  • 打赏
  • 举报
回复
调用mysql的API

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧