微软对PHP的支持力度很大,在IIS下加入了PHP支持,支持PHP访问.Net组件,更重要的是发布了原生的SQL Server驱动来帮助PHP程序使用SQL Server数据库做开发。
公司的CRM产品使用PHP开发,使用ADODB统一数据库连接层,当初开发时,只支持MySQL一种数据库,后来,我通过PHP内置的MS SQL驱动来帮助系统支持SQL Server数据库,由于使用了ADODB,这个类库对于PHP内置的MS SQL驱动支持很好,而数据库函数相似度也很高,所以移植过程还算顺利,这个过程主要是对于系统中的一些不通用的sql语句进行修改,从而可以支持SQL Server数据库,其次就是改了分页函数的算法,支持SQL Server2005的ROWNUM函数,不过使用这个驱动的问题是对UTF-8的支持不佳,虽然CRM系统内部可以读取和写入中文,但是使用SQL Server Management Studio打开会发现里面都是乱码,对于某些企业而言,这是不可接受的,也不方便一些系统间的集成。
当微软发布PHP原生的SQL Server驱动第一版时候,我就曾经想要使用这个驱动开发访问SQL Server数据库,来达到更好的对于SQL Server的支持,毕竟微软开发的东西更有保障,可是最终没有成功,不成功的原因很多,主要是:
1. ADODB内对于PHP原生的SQL Server驱动支持不够,如果要使用它必须自己开发对应的内容,这个要耗费大量的时间。
2. PHP原生的SQL Server驱动同样不支持UTF-8编码。
3. 最后也是最重要的问题:关键函数和特性的缺失,包括num_rows函数和可滚动结果集的特性,而CRM系统却大量依赖这些特性,于是与系统无法保持兼容。
最近看到了微软发布PHP原生的SQL Server驱动v1.1,里面看到对UTF-8编码和一些关键特性的支持,我知道是时候把MS SQL驱动换成微软PHP原生的SQL Server驱动了。
但是ADODB内对于PHP原生的SQL Server驱动支持似乎只是v1.0,没有把v1.1中的特性包含在其中,于是我只能自己动手,丰衣足食了。其中主要改变如下:
1. 在sqlsrv_connect加入charset参数,强制连接使用UTF-8编码。
2. 在sqlsrv_query中加入了Scrollable选项,强制使用SQLSRV_CURSOR_KEYSET类型结果集(支持num_rows函数和随机访问)。
3. 重写Move函数支持随机访问结果集。
4. 。。。
我将修改的文件上传上来,如果你要使用,可以将php文件放到ADODB目录下的drivers目录下即可。
分享到:
相关推荐
SQL Server 2000驱动包是用于连接到Microsoft SQL Server 2000数据库管理系统的重要组件。在本文中,我们将深入探讨SQL Server 2000的驱动、其功能、以及如何使用这些驱动来建立数据库连接。 首先,SQL Server 2000...
ADO是微软提供的一种用于访问数据库的接口,它使得C++程序员能够轻松地与多种数据库进行通信,包括SQL Server。 首先,理解ADO的核心概念。ADO包含一系列COM对象,如Connection、Recordset、Command等,它们分别...
`adodb.rar_c 连接sqlserver_sqlserver 封装`这个标题所指的,是C语言环境下封装的ADODB(ActiveX Data Objects for Database)接口,用于与SQL Server数据库进行交互。ADODB是一个微软提供的数据访问接口,允许...
ADODB(ActiveX Data Objects Database)是微软提供的一个数据库访问接口,支持多种数据库,包括SQL Server。在WinCC V16中,我们可以通过编写VB脚本来操作ADODB对象,从而与SQL Server进行数据交互。 首先,我们...
ADODB(Active Data Objects Data Base)是一种PHP存取数据库的中间函数组件,可以支持多种数据库,如MySQL、PostgreSQL、Interbase、Informix、Oracle、SQL Server、Foxpro、Access、Sybase、DB2等。使用ADODB可以...
SQL Server 2000驱动包是用于连接到Microsoft SQL Server 2000数据库管理系统的一个关键组件。这个驱动包提供了必要的接口,使得应用程序能够通过ODBC(Open Database Connectivity)或者ADO(ActiveX Data Objects...
ADODB(ActiveX Data Objects Database)是微软提供的一种数据访问接口,主要用于在Windows环境中与各种数据库进行交互。这个“ADODB数据驱动操作支持库”很可能是一个包含ADODB接口的组件或者类库,用于简化和增强...
ADODB还支持更复杂的功能,如参数化查询、事务处理、数据流操作等。通过深入学习ADODB,开发者可以实现高效、灵活的数据库应用程序。在实际开发中,还需要考虑安全性、性能优化以及错误处理等多方面因素,确保代码的...
本书会介绍如何使用PHP的PDO(PHP Data Objects)扩展或者ADODB(Active Record Object Database Abstraction Library)库来连接和操作SQL Server数据库,进行数据的读取、写入和事务处理。此外,还会涉及错误处理、...
1. **创建数据库**:首先需要在SQL Server中创建一个名为`stud`的新数据库,并在其中创建一个表`xi`用于存储系别信息。具体的SQL语句如下: ```sql CREATE TABLE dbo.xi ( xiHao INT IDENTITY(1,1) NOT NULL, ...
在SQL Server 2005中调用WebService方法是一种集成外部服务到数据库操作中的技术,这对于数据交互和扩展SQL Server的功能至关重要。以下将详细介绍如何实现这一功能,以及相关的知识点。 一、理解SQL Server与Web ...
- 安装SQL Native Client,它是SQL Server 2008的专用连接驱动,支持更高效的数据访问。 2. **设置数据库连接**: - 打开VC6,创建一个新的项目或使用提供的示例工程。在项目中,你需要包含适当的头文件,如`#...
SQL Server则是微软的一个关系型数据库管理系统,广泛应用于数据存储、管理和分析。当ASP与SQL Server结合使用时,可以构建强大的Web应用程序,实现数据的高效管理和交互。 ASP与SQL Server集成的关键在于ADO...
Sql Server数据库超时问题的解决方法 在Sql Server数据库中,超时问题是一个常见的错误,可能会导致数据库的性能下降,影响应用程序的稳定运行。该问题的解决方法可以从多方面入手,包括数据库设计、连接设置、查询...
自动化 wincc连接sql server数据库脚本,不需要wincc授权,直连sql server数据库。解决归档导出问题
在本文中,我们将深入探讨如何使用VBA(Visual Basic for Applications)通过ADO(ActiveX Data Objects)连接到SQL Server数据库并执行数据查询。这个过程在Excel中尤其常见,因为VBA是Excel内置的编程环境,允许...
连接SQL Server数据库,我们需要使用ADO(ActiveX Data Objects),它是Microsoft提供的一个数据访问接口,可以处理各种类型的数据库,包括SQL Server。以下是一段基本的ASP连接SQL Server的代码示例: ```vbscript...
总之,SQL Server与VB的结合为开发高效的数据驱动应用程序提供了强大支持。无论你是刚开始接触数据库编程,还是希望提升现有项目的数据管理能力,这个资料包都将是你宝贵的参考资料。在实践中不断探索和学习,你将...
本篇文章将详细介绍如何在VB(Visual Basic)环境中,利用ADO(ActiveX Data Objects)技术将SQL Server中的表数据转换为XML文件。 首先,我们需要了解XML(eXtensible Markup Language),它是一种用于标记数据的...
在安装SQL Server数据库时,需要注意身份验证模式要设置为“SQL Server和Windows混合模式”。这将确保SQL Server数据库能够正确地与Windows操作系统集成。 二、创建数据库 创建数据库需要通过企业管理器来实现。...