蒙在股里 发表于 2015-1-16 22:23:18

MYSQL编程:客户机程序1―毗连到MYSQL服务器

业界普遍的声音认为:“MySQL是一个可靠的数据库系统,MySQL学习教程无论是在嵌入式或大型群集系统的部署中,还是在基于Web的应用程序领域。
6.2客户机程序1―毗连到服务器
我们的第一个MySQL客户机程序很复杂:毗连到服务器、断开,并加入。它自己并非十分有效,可是必需晓得怎样做它,由于实践上用MySQL数据库做任何事变都必需与服务器毗连。这是一个公用的操纵,开辟创立毗连的代码是编写每一个客户机程序都将利用的代码。除此以外,这项义务带给我们一些复杂入手下手的事变。今后,我们能够增添这个客户机来做一些更有效的事变。我们第一个客户机程序的源代码突Щ绦?,包含一个独自的文件,client.c:


这个源文件以包含stdio.h和mysql.h入手下手。MySQL客户机大概包含其他的头文件,可是一样平常来讲最少有两个是最基础的。
主机称号、用户称号、口令和数据库称号的缺省值流动在代码外部,使事变变得复杂。今后,我们将参数化这些值,以即可以在选项文件或命令行中指定它们。程序的main()函数创立和停止与服务器的毗连。创建毗连利用以下两个步骤:
1)挪用mysql_init()来猎取毗连处置程序。MYSQL数据范例是一个包含毗连信息的布局。这类范例的变量称为毗连处置程序。当我们将NULL传送给mysql_init()时,它分派一个MYSQL变量,初始化它,然后前往一个指向它的指针。
2)挪用mysql_real_connect()来创立与服务器的毗连。mysql_real_connect()可有恣意数目的参数,比方:
■毗连处置程序的指针。这不克不及为NULL;它应当是由mysql_init()前往的值。
■服务器主机。假如指定NULL或主机“localhost”,则客户机毗连到在当地主机利用UNIX套接字运转的服务器上。假如指定一个主机称号或主机的IP地点,则客户机毗连到利用TCP/IP毗连定名的主机上。
在Windows上,除利用TCP/IP毗连而不是用UNIX套接字之外,这类操纵是相似的(在WindowsNT上,假如主机为NULL,则在TCP/IP之前,先试着利用一个指定的管道来毗连)。
■用户称号和口令。假如称号为NULL,则客户机库将逻辑称号发送给服务器。假如口令为NULL,则不发送口令。
■端标语和套接字文件。这些指定为0或NULL,来告诉客户机库利用它的缺省值。假如不指定端口和套接字,则依据但愿毗连到的主机断定这些缺省值。附录F中的mysql_real_connect()的形貌给出有关这些的具体情形。
■标记值。由于我们不利用任何特定的毗连操纵,因而它是0。这个参数可用的选项在附录F中的mysql_real_connect()的项目中会商具体情形。要想停止这个毗连,可将毗连处置程序的指针传送给mysql_close()。当将毗连处置程序传送mysql_close()来停止个毗连时,由mysql_init()主动分派的毗连处置程序主动地开释。
要想测试客户机程序1,可以使用本章后面创建客户机程序时给出的引导来编译和毗连,然后运转它:
%client1程序毗连到服务器、断开并加入。这一点都不使人镇静,但它是一个入手下手。但是,它只是一个入手下手,由于有两个主要的弱点:
■客户机没有毛病反省,以是其实不真正地晓得实践上它是不是在事情!
■毗连参数(主机称号,用户称号等)在源代码外部流动。假如同意用户经由过程指定选项文件或命令行中的参数来办理这个成绩则更好一些。这些成绩的处置都不坚苦。我们将鄙人面专门办理它们。


也许最好的策略是以不变应万变:给客户他们所需要的,不多也不少。如果MySQL学习教程适合他们,他们就不应该买别的工具。事实上,云计算产业一直推崇自助服务,但提供这些服务的公司已经开始认识到解决方案提供商推销他们商品的价值。

爱飞 发表于 2015-1-28 06:06:00

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

再现理想 发表于 2015-2-5 18:54:57

所以你总能得到相应的升级版本,来满足你的需求。

柔情似水 发表于 2015-2-13 06:50:22

发几份SQL课件,以飨阅者

海妖 发表于 2015-3-3 18:45:29

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

透明 发表于 2015-3-11 12:44:00

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

不帅 发表于 2015-3-18 18:53:31

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

因胸联盟 发表于 2015-3-26 14:19:36

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
页: [1]
查看完整版本: MYSQL编程:客户机程序1―毗连到MYSQL服务器