王朝网络
分享
 
 
 

初学Windows下mysql的安装以及其C API使用

王朝mysql·作者佚名  2006-01-09
宽屏版  字体: |||超大  

主要介绍mysql在windows下的安装以及一些基本的应用.并且介绍了其CAPI的使用.一, mysql的安装和使用。

1, 安装mysql,http://dev.mysql.com/downloads/下载mysql-4.0.23-win.zip,听说这个版本比较稳定,曾经下载过mysql-4.1.7-win.zip,但是不好用,老是启动的时候提示进程意外终止,下载完以后就一路next拉。

2, 启动mysql,进入c:\mysql\bin,点击winmysqladmin就好了,第一次进去的时候会要求填入用户名和密码的,以便在系统目录下生成my.ini文件。所以要注意在卸载mysql的时候一定要搜索一下my.ini,并且把他删除,免得他影响下一次的安装。不过以后启动就用net start mysql,关闭使用net stop mysql就好了。可以输入c:\mysql\bin\mysql来测试一下。

3, 用户管理,刚安装的时候只有两个用户,一个是root,一个是空,他们的密码都为空。我们先为root来设置口令。C:\mysql\bin\mysqladmin -u root password "1234567"。 mysql -u root -p.输入密码以后就可以看见mysql提示符了,

show databases;查看所有的数据库,记得一定要打后面的分号,回车只是换行。

use mysql; 选择数据库mysql,

show tables from mysql; 查看数据库mysql中的所有表格,在user表格中就记录了用户名,密码,用户权限等信息。

Select host,password,user from user; user里面列数太多了,看到这三个信息就差不多了,里面列出来了所有的用户名,以及允许登陆的地址。在这里先删除匿名用户,delete from user where user="",接着把host不是本地的删除,delete form user where host=www.*.com,现在就只剩下一个root用户可以从本地登陆我的数据库了。下面添加一个常用的用户,假定该用户可以从任意地址登录,并且拥有所有的权限,grant all privileges on *.* to sagely@"%" identified by ‘密码' with GRANT OPTION。再一次Select host,password,user from user;就可以看到多了一个sagely用户,他可以从任何地址登录,至于添加别的用户也是同理,只是可能权限控制不同,可以使用插入user中一条记录来实现,譬如insert into user values(‘localhost','sage',PASSWORD(‘123'),'Y','Y','Y','Y',,,,,);来实现,具体的Y还是N依照权限而定。这样就实现了对mysql数据库用户的管理。

4, 数据的插入、删除,修改和查询。

在这一部分,主要是应用了SQL语句。(在mysql命令行下)

create database ra; 创建一个名为ra的数据库。

Use ra; Create table usr_info(c varchar(15),st varchar(15),l varchar(15),o varchar(15),u varchar(15),cn varchar(15))创建一个名为usr_info的表,在表中有6个属性。

Insert into usr_info values("cn","dd","dd","dd","ee","ee")插入具体数据。等等,具体都和SQL语句是一样的。

二 ,C API的使用

1, 环境的设定

在VC里的toos->option->directories中将include增加一个c:\mysql\include,将lib增加一个c:\mysql\lib,将libmysql.dll和libmysql.lib拷到当前目录下,并且把libmysql.lib增加到工程中。

2, 建立与服务器的连接。

Include <mysql.h> //包含头文件

MYSQL *conn;//定义一个MYSQL类型结构,这个几乎在所有的后面的编程中都需要

MYSQL *mysql_init(MYSQL *conn);//如果conn=NULL,返回一个新分配的句柄结构返回,反之则重新初始化该结构,出现错误则返回NULL;

MYSQL *mysql_real_connect(MYSQL * connection,const char *server_host,const char *sql_urs_name,const char *sql_password,const char *db_name,unsigned int port_number,const char *unix_socket_name,unsigned int flags);//连接MYSQL服务器,里面的参数应该很清楚了,一般port_number和unix_socket_name的值为0和NULL。例如:

mysql_real_connect(conn_ptr,"localhost","sagely","secret","ra",0,NULL,0);

void mysql_close(MYSQL *connection);关闭一个连接。

3, 执行SQL语句

mysql_select_db(MYSQL *connection,const char *db_name);选定某个数据库。

int mysql_query(MYSQL *connection,const char *query)//他将执行query语句,运行成功将返回0,例如mysql_query(conn_ptr, Create table cert_info(...),将创建一个名为cert_info的表,几乎所有的SQL语句都能这么执行。呵呵,是不是显得很简单,他就和命令行中输入的SQL语句差不多。在使用上面函数的时候一般会使用

my_ulonglong mysql_affected_rows(MYSQL *connection),这个函数返回的是mysql_query对进行改动的行的数量。

4, 处理检索到的数据

当我们可以执行SQL语句以后,那么就很容易执行增加删除修改等操作,但是假若检索出来的数据存储在哪里呢?

MYSQL_RES *mysql_use_result(MYSQL *connection)这个函数得到一个连接对象返回一个结果集合指针,出错时返回NULL。不过他只是返回一个集合对象初始化来接收数据,并没有将任何检索到的数据返回到结果集合中。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)这个函数获得mysql_use_resul得到的结果结构体,并从中检索单个行,并返回分配给行结构体的数据,没有更多数据或出错时,返回NULL。

Unsigned int mysql_field_count(MYSQL *connection)它得到一个连接对象并返回在集合中字段的数目。

于是有上面的基础我们就可以理解下面这段了:(没有错误处理)

mysql_init(&conn_ptr);

mysql_real_connect(conn_ptr,"localhost","sagely","secret","ra",0,NULL,0);

mysql_query(conn_ptr,"SELECT * form usr_info);

res_ptr=mysql_use_result(&conn_ptr);

sqlrow=mysql_fetch_row(res_ptr);

for(int i=0;i<mysql_field_count(&conn_ptr);i++){printf("%s ",sqlrow);}

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)它返回的是列的信息,比如列的名称,列所在表名称等等,有了这个就可以将列标题与数据想对应起来了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有