mysql -c_MySQL_使用C连接Mysql,一、高性能数据库的选择 ---- - phpStudy

本文介绍了在Windows NT环境中,使用C语言连接MySQL数据库,对比了不同数据库的性能,并详细阐述了MySQL的安装、运行过程,以及利用MySQL C API进行数据库应用开发的方法,展示了如何创建表、插入数据和检索数据,强调了MySQL在高性能数据库应用中的优势。
摘要由CSDN通过智能技术生成

使用C连接Mysql

一、高性能数据库的选择

---- 在数据库的应用开发中,常常会遇到性能和代价的之间矛盾。以作者在开发股市行

情查询和交易系统中遇到的问题为例,要在实时记录1000多只股票每分钟更新一次的行

情数据的同时,响应大量并发用户的数据查询请求。考虑到性价比和易维护性,系统又

要求在基于PC服务器,Windows NT平台的软硬件环境下实现。开始,我们采用了MS SQL

Server 6.5 作为数据库系统,用Visual C++ 6.0开发了访问数据库的前端,应用ODBC

数据接口,在进行了大量的数据库配置和程序优化后,发现仍不能满足性能要求。后采

用SQL Server的DB-Library接口,绕过了ODBC解释层,可以每秒更新行情数据30次,同

时支持20-30个左右的并发用户进行行情查询,基本满足要求(单台PC服务器,单PII3

50 CPU,内存128M,SCSI硬盘)。有没有可能进一步提高系统的性能和负载能力呢?经

过分析,数据库服务器是系统的瓶颈。当然,可以采用UNIX服务器+大型数据库的系统

平台,但其开发、运行、维护的费用比微机+Windows NT平台的费用高出数倍。我们在

其它一些系统的开发中,也经常遇到这样的矛盾。如何在微机平台上建立大容量、高效

率、易维护、高性价比的数据库系统呢?

---- 考察国内基于微机平台的数据库应用系统,典型的如网易的分布式邮件系统,采用

了FreeBSD+MySQL的平台,其容量、负载能力和响应速度都很优秀。作者查阅了MySQL的

相关文档,发现MySQL是GNU软件(即OpenSource自由软件)中非常优秀的数据库系统,

它完全符合SQL92 (Entry level)和 ODBC( level 0-2)规范,在符合POSIX规范的操

作系统上实现了非常高效的关系型数据库管理系统。根据MySQL提供的文档,它的数据操

作堪称所有数据库中最高效的,Benchmark如下表:

Reading 2000000 rows by index

Database Seconds

mysql 367

mysql_odbc 464

db2_odbc 1206

informix_odbc 121126

ms-sql_odbc 1634

oracle_odbc 20800

solid_odbc 877

sybase_odbc 17614

Inserting (350768) rows

Database Seconds

mysql 381

mysql_odbc 619

db2_odbc 3460

informix_odbc 2692

ms-sql_odbc 4012

oracle_odbc 11291

solid_odbc 1801

sybase_odbc 4802

(run on the same NT 4.0 machine)

---- 从MySQL的Benchmark中可以看到,MySQL的性能非常出众(当然,测试的MySQL系统

可能作了优化,被测数据可能是针对MySQL选择的),而且MySQL提供了对Windows NT的

支持。Windows NT+MySQL能否成为构建高性能数据库应用的理想选择呢?作者用MySQL

的数据接口改写了程序,经过一段时间的运行,证明MySQL确实是高效而稳定的数据库,

非常适合构建大容量、高效率、易维护、高性价比的数据库应用系统。现将MySQL的安装

、运行、开发的心得与大家共享。

二、MySQL的安装和运行

---- 首先从http://www.mysql.com/(国内用户可以从http://www.freecode.com.cn/m

irror/mysql/)下载MySQL的执行代码及源代码。注意,Windows NT用户要选择NT下的执

行代码,我下载的是mysql-shareware-3.22.32-win.zip。解包后执行Setup,按屏幕提

示即可完成安装。

---- 拷贝MySQL根目录(c:\mysql)下的my-example.cnf到c:\my.cnf,按文件中的提示

编辑my.cnf(如果MySQL的根目录是c:\mysql,可暂不改动my.cnf)。在NT的控制台窗口

中,进入MySQL的执行目录(c:\mysql\bin),执行

---- C:\mysql\bin\mysqld-shareware --standalone

---- 则MySQL的数据库引擎启动。打开另一NT控制台窗口,执行

---- C:\mysql\bin\mysql mysql

---- 建立数据库连接,出现“mysql>”提示符后,执行

---- mysql > DELETE FROM user WHERE Host='localhost' AND User='';

---- mysql > QUIT

---- 删除所有的非授权用户。

---- 然后执行

---- C:\mysql\bin\mysqladmin reload

---- C:\mysql\bin\mysqladmin -u root password your_password

---- 其中,your_password是你选择的数据库管理员的口令,必须妥善保管。

---- 如果要每次都以管理员身份连接数据库,则编辑c:\my.cnf,在[client]段中加入

user=root

password= your_password

如果要停止MySQL的数据库引擎,可以执行

C:\mysql\bin\mysqladmin -u=root -p shutdown

按提示输入管理员口令后,MySQL的数据库引擎停止。

三、MySQL客户端应用的开发

---- MySQL提供了丰富的数据接口API,包括C、C++、Perl、PHP、Python、TCL等API和

JDBC,ODBC接口。出于性能考虑,我们采用了MySQL的C API进行开发。现以Visual C++

环境为例,作一简单介绍。

---- 新建一Win32 Console Application的Project,把“c:\mysql\include”添加到编

译选项的包含路径中(在Project Options中加入 /I "d:\mysql\include&quounter.cgol.net 魈迦缦拢?

#include

#include

#include

#include

int main( int argc, char * argv[] )

{

char szTargetDSN[] = "test";

char szSqlText[500]="";

char aszFlds[ 25 ][ 25 ];

MYSQL * myData ;

MYSQL_RES * res ;

MYSQL_FIELD * fd ;

MYSQL_ROW row ;

int i,j,k;

BOOL bCreate = TRUE;

if ( (myData = mysql_init((MYSQL*) 0))

//初始化数据结构

&& mysql_real_connect( myData, NULL,

//连接数据库

"root", " your_password ", szTargetDSN,

MYSQL_PORT, NULL, 0 ) )

{

if(bCreate)

{

sprintf(szSqlText, //构造SQL语句

"create table mytable "

//新建一张表

"(time datetime, s1 char(6), "

"s2 char(11), s3 int, s4 int)");

if (mysql_query( myData, szSqlText))

//执行SQL语句

{//执行SQL语句出错

ErrLog( "Can't create table") ;

mysql_close( myData ) ;

return FALSE ;

}

sprintf(szSqlText,

"insert into mytable "

//向表中插入数据

"values('2000-3-10 21:01:30',"

//注意时间的格式

"'Test','MySQLTest',2000,3)");

if (mysql_query( myData, szSqlText))

{//执行SQL语句出错

ErrLog( "Can't insert data to table") ;

mysql_close( myData ) ;

return FALSE ;

}

sprintf(szSqlText, "select * from mytable ");

if (mysql_query( myData, szSqlText))

//进行数据检索

{

//执行SQL语句出错

mysql_close( myData ) ;

return FALSE ;

}

else

{

res = mysql_store_result( myData ) ;

//取得查询结果

i = (int) mysql_num_rows( res ) ;

//取得有效记录数

printf( "Query: %s\n%ld records found:

\n", szSqlText, i ) ;

for ( i = 0 ; fd = mysql_fetch_field( res ) ;

i++ )

strcpy( aszFlds[ i ], fd->name ) ;

//取得各字段名

for (i=1; row = mysql_fetch_row( res ); )

//依次读取各条记录

{j = mysql_num_fields( res ) ;

//取得记录中的字段数

printf( "Record #%ld:-\n", i++ ) ;

for ( k = 0 ; k < j ; k++ )

//输出各字段的值

printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ],

(((row[k]==NULL)||

(!strlen(row[k])))?"NULL":row[k])) ;

puts( "==============================\n" ) ;

}

mysql_free_result( res ) ;

}

}

else

{//连接数据库出错

ErrLog( "Can't connect to the mysql server ") ;

mysql_close( myData ) ;

return FALSE ;

}

mysql_close( myData ) ;

return TRUE ;

}

---- 对其中几个函数作简单说明,详细说明,可参考MySQL文档:

---- 1. MYSQL *mysql_init(MYSQL *mysql)

---- 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。参数

mysql为指向该结构的指针,如果mysql为NULL,则新建并初始化一个MYSQL的数据结构。

新建的结构将在mysql_close()中释放。

---- 若成功,返回初始化的MYSQL数据结构的指针,否则返回NULL。

---- 2. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,

---- const char *user, const char *passwd, const char *db,

---- unsigned int port, const char *unix_socket, unsigned int client_flag)

---- 与MySQL数据库引擎建立连接。在执行进一步的数据操作之前,必须保证mysql_re

al_connect()成功返回。

---- 参数mysql是mysql_init()的返回值;

---- 参数host是运行MySQL数据库引擎的机器的TCP/IP主机名,如为NULL则默认为“lo

calhost”;

---- 参数user和passwd是MySQL数据库的合法用户和口令;

本文作者:相关阅读:

企业进一步推动微软正版软件的发行

php5 pdo新改动加载注意事项

a.sp.net清除ListBox的列表项(删除所有项目)

JavaScript窗口功能指南之在窗口中书写内容

将PHP作为Shell脚本语言使用

sqlserver2008 拆分字符串

一个简单的网上书城的例子(六)

asp.net 获取目录下的文件数和文件夹数

ACCESS中的AutoExec宏和AutoKeys宏组

asp 将日期格式化为需要的格式

JS 文字符串转换unicode编码函数

没有绝对的安全Linux病毒不可小视

CSS教程:div设置float后高度不自动增加

jquery 简短右键菜单 多浏览器兼容

phpStudy 2014.10.02 『软件简介』 该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。总之学习PHP只需一个包。   对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。 1、全面适合 Win2000/XP/2003/win7/win8/win2008 操作系统 ,支持Apache、IIS、Nginx和LightTPD。 2、该程序包集成以下软件,括号内为phpstudy下对应的目录。 php 5.6.1 (php56n) php 5.5.17-nts (php55n) php 5.4.33-nts (php54n) php 5.3.29 (php53) php 5.3.29-nts (php53n) php 5.2.17 (php52) Apache 2.4.10 (Apache) Nginx 1.6.2 (nginx) LightTPD 1.4.35 (Lighttpd) MySQL 5.5.40 (MySQL) MySQL-Front 5.3 (SQL-Front) phpMyAdmin 3.5.8.2 (phpMyAdmin) pear 1.9.4 (pear) OpenSSL 1.0.1e&0.9.8y ZendOptimizer 3.3.3 (php5.2有) Zend Loader 5.5.0 (php5.3有) Zend Loader 6.0.0 (php5.4有) wincache 1.3.5 (fastcgi有) php_opcache 7.0.3 (ZendOpcache扩展) xdebug 2.2.5 xcache 3.1.0 eAccelerator 1.0&0.9.6 php_sqlsrv (MSSQL扩展) php_pdo_sqlsrv (PDO-MSSQL扩展) SendMail 3.2 (sendmail) 3、MySQL数据库默认用户名:root,密码root,安装后请重新设置密码。 4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效直观地进行控制程序的启停。 5、自带FTP服务器,支持多用户,无需再安装FTP服务器。自带网站挂马监视器,随时记录文件的修改情况,让挂马文件无处可逃。 6、本程序完美支持II7,IIS8和IIS6。应网友的要求制作Nginx版和Lighttpd版。Nginx版为phpfind,Lighttpd版为phpLight。 推荐:学习JSP用JspStudy。 『软件简介』 JspStudy集成JDK+tomcat+Apache+mysql,JSP环境配置一键启动。无需修改任何配置即可迅速搭建支持JSP的服务器运行环境。 纯绿色解压即可,支持系统服务和非服务两种启动方式,自由切换。控制面板更加有效直观地进行控制程序的启停。 JspStudy将复杂的JSP环境配置简单化。 『特别注意』 1. 为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。 2. 此为apache+php方案,需要Nginx+php方案的请到www.phpStudy.net下载phpfind,Lighttpd+PHP方案下载phpLight。 3. 重装系统后或相关服务丢失时,只需要点一下『运行模式-应用』即可。 4. 可通过菜单『卸载相关服务』进行卸载相关服务。 5. 在『启动』、『停止』、『重启』三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。 6. 菜单『phpStudy 设置』可以进行php,apche,mysql的相关设置。菜单『站点域名设置』可以进行站点及域名的添加。 7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。 8. 端口问题无法启动时,请使用菜单『强制启动端口』进行端口检测,尝试启动。 系统服务和非服务启动的区别: 系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省电脑的资源。 『特别声明』该程序没有任何商业目的,之所以取名为phpStudy,仅作学习之用,不得用于商业用途;该程序所包括的软件版权归原作者所有。对于使用此程序给您造成的任何损失,本人概不负责! MySQL数据库默认用户名:root,密码root (为什么很多人看不到呢!!!) ====phpStudy提示没安装Zend或Zend Optimizer not Installed====== phpStudy是自带Zend Optimizer和Zend Guard Loader, 但是php5.3及以后的版本Zend Optimizer改名Zend Guard Loader。 php5.3及以后的版本Zend Optimizer改名Zend Guard Loader。 是zend官方改名不是我改的哟。 也就是说需要Zend Optimizer的程序将不能安装到php5.3以后的版本。 所以下载phpStudy之后切换到php5.2即可解决问题。 需要Zend Guard Loader的切换到php5.3和php5.4,但是必须是以fastcgi模式运行 参照:http://www.phpstudy.net/a.php/181.html ====IIS7/8快速安装PHP及phpStudy注意事项======= phpStudy支持win7/8和win2008/2012的IIS7/8。win8最好以管理员身份运行。已经测试过N次了。 但是在安装前要注意激活FastCGI 模块 默认安装的 IIS 中 FastCGI 模块被关闭。要激活其的步骤在不同版本的 Windows 下不同。 要在 Windows Vista SP1 和 Windows 7 中激活 FastCGI 支持: 在 Windows 开始菜单中选择“运行...”(或在搜索框内),输入“optionalfeatures.exe”并按“确定”(或敲回车键); 在“Windows 功能”对话框中展开“Internet 信息服务”,“万维网服务”,“应用程序开发功能”,并选中“CGI”的选择框; 点击确定按钮并等待安装完成。 要在 Windows Server 2008 和 Windows Server 2008 R2 中激活 FastCGI 支持: 在 Windows 开始菜单中选择 "运行:",输入 "CompMgmtLauncher" 并点击 "确定"; 或 打开服务器管理器-添加角色-Web 服务器(IIS),再勾选CGI后安装 激活FastCGI 模块后切换到phpstudy的IIS7+php5.2-5.5即可 参照:http://www.phpstudy.net/a.php/182.html ====不能启动的问题========== 有个别同学说不能在win7下使用,此程序已经在Win2000/xp/2003/win7/win8/win2008下测试成功,操作系统均专业版。apache启动不了,原因一是防火墙拦截,二是80端口已经被别的程序占用,如IIS,迅雷等;三是没有安装VC9运行库,php和apache都是VC9编译。解决以上三个问题,99%能一次性安装成功,如何不能成功,那1%的可能就是人品问题,就不要联系我了。 不是管理员administrator的用户,请右键以管理员身份运行。win8最好以管理员身份运行。牵扯到服务进程的管理必须以管理员身份运行。 端口问题无法启动时,请使用菜单『环境端口检测』进行端口检测,尝试启动。最重要的一点,你的机子一定要安装VC9运行库,phpStudy安装路径不得有汉字。 32位的VC9运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=5582 64位的VC9运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=15336 VC11运行库下载:http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 不能启动 参照:http://www.phpstudy.net/a.php/184.html scp1688@163.com QQ:282129207 http://www.phpStudy.net =====有问题的请仔细阅读下面内容。================= 1. 如何调试打开PHP 参照:http://www.phpstudy.net/a.php/183.html 2. 无法正常启动时 参照:http://www.phpstudy.net/a.php/184.html 3. 如何修改端口及WWW目录 参照:http://www.phpstudy.net/a.php/185.html 4. 修改或重置MySQL密码 参照:http://www.phpstudy.net/a.php/186.html 5. 快速建立MySQL数据库 参照:http://www.phpstudy.net/a.php/187.html 6. 如何添加多站点 参照:http://www.phpstudy.net/a.php/188.html 7. 如何控制单一启停 参照:http://www.phpstudy.net/a.php/189.html 8. 重装系统后启动 参照:http://www.phpstudy.net/a.php/190.html 9. 如何更新升级 参照:http://www.phpstudy.net/a.php/191.html 10. 提示没安装Zend或Zend Optimizer not Installed 参照:http://www.phpstudy.net/a.php/181.html 11. IIS7/8快速安装PHP及注意事项 参照:http://www.phpstudy.net/a.php/182.html 12. 如何禁止或允许站点目录列表 参照:http://www.phpstudy.net/a.php/192.html 13. 自带Ftp Server如何使用 参照:http://www.phpstudy.net/a.php/193.html 14. 自带挂马监视器如何使用 参照:http://www.phpstudy.net/a.php/194.html
phpStudy该程序包集成最新的Apache PHP MySQL phpMyAdmin Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有13M,有专门的控制面板。总之学习PHP只需一个包。   对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。 1、全面适合 Win2000/XP/2003/win7 操作系统。 2、该程序包集成以下软件,均为最新版本。 3、MySQL数据库用户名:root,密码root,安装后请重新设置密码。 4、本程序纯绿色,支持PHP5.3和PHP5.4一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效直观地进行控制程序的启停。 5、应网友的要求制作Nginx版和Lighttpd版。Nginx版为phpfind,Lighttpd版为phpLight。 特别注意 1. 为了减少出错安装路径不得有空格和汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。 2. 此为apache php方案,需要Nginx php方案的请到www.phpStudy.net下载phpfind,Lighttpd PHP方案下载phpLight。 3. 重装系统后或相关服务丢失时,只需要点一下『运行模式-应用』即可。 4. 可通过菜单『卸载相关服务』进行卸载相关服务。 5. 在『启动』、『停止』、『重启』三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。 6. 菜单『phpStudy 设置』可以进行php,apche,mysql的相关设置。菜单『站点域名设置』可以进行站点及域名的添加。 7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。 系统服务和非服务启动的区别: 系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省电脑的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值