vfp/(asp/vfpdll/Sql)
以下是发在梅子论坛的贴子,转发过来,希望给用得着的狐友参考。
我的程序以前一直是用花生壳绑定IP实现的远程,由于客户服务器和客户端都是通过宽带上网,一般的操作(开进货单、销售单等)速度也还不错,但是在远程客户端修改商品资料(10000多条记录)、查询一段时期的进销存流水(一周5000条以上)等涉及到取记录量大的操作时非常慢。
前段时间参考ZXS4785版主及其它狐友的代码后,对服务器环境及程序进行vfp/(asp/vfpdll/Sql)模式改造。由于加入myfll.fll进行数据压缩,远程操作速度较以前大为改善。趁这两天有时间,特将实现方法及相关代码介绍如下,为初接触者提供参考,老手自可一笑而过咯,呵呵。在此,谢过ZXS4785与木瓜先!
一.服务器设置
1.花生壳:绑定IP之用,如果服务有固定IP除外。
2.IIS:我用的是5.1,Win系统是XP SP2。安装后IIS后,建议设置TCP端口为80之外的其它端口譬如8080,因为有些地区的电信封80端口(这就是本机能访问网页,而远程不能访问的一大原因)。
3.设定默认网站的主目录,后面提到的sqlexec.asp及twcom.dll都要放在主目录中,以提供给客户端调用。
4.将myfll.fll复制到WINDOWS系统文件夹,这一点非常重要,否则执行asp将提示找不到API库错误。mfll.fll在这里的作用是调用cursortostr函数将查询得到的视图压缩成二进制字符串,这个也是必须的,大量记录不经压缩而传输到客户端,会等晕死的。
二.程序
1.SQLExec.asp:一个asp文件,它的作用是接收客户端的SQL指令,再传输到twcom.dll执行,得到结果后可由其response对象读取。以下是代码,可以在VFP环境用modi Comm SQLExec.asp的命令或用记事本编写。
<%
'取客户端IE表单上cSqlstring变量的值,即sql语句'
p1=Request.QueryString("cSqlstring")
'以下两句是将p1中的%、+转换为半角'
strsql =Replace(p1,"%","%")
strsql =Replace(strsql,"+","+")
'将sql语句传输到twcom中执行,并得到压缩后的二进制字符'
Set oVFP=Server.Createobject("twcom.w_select")
response.BinaryWrite(oVFP.W_exec(strsql))
Set oVFP=nothing
%>
2.twcom.Dll:用VFP9编写(7、8应该也可以),建一project,主文件twcom.prg,代码很简单,连编成dll即可。twcom.prg代码如下
*****************************************
Define Class W_SELECT As Session OlePublic &&定义类
Function W_exec(cSql As String) As Byte &&
相关文档:
&nbs ......
通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。
因为SQL Server并不包含这个功能,只能靠第三方的代码了。
以下存储过程可以实现:
CREATE PROCEDURE dbo.UspOutputData
@tablenam ......
原贴:http://topic.csdn.net/u/20100412/11/a4ea520e-7dd0-44d2-98bb-9f62f0ed6160.html?21233
--------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-14 06:02:36
-- Version:Microsoft SQL Server 2008 (RTM) - 1 ......
使用过SQL Server的人应该都清楚,SQL Server常用的有两种认证方式,一种是本地系统账户认证(Windows Authentication ),一种是使用用户名和密码(SQL Server Authentication ),第二种认证方式必须启用SQL Server的混合模式。
1.Windows Authentication连接部分代码段:
<?php
$serverName = "(local)";
$co ......
declare @XML XML
SET @XML='<root>
<OLDVALUE>
<H_Action id="1130">030</H_Action>
<D_Action>030</D_Action>
<OrderCompany>00220</OrderCompany>
<OrderNumber>10004035</OrderNumber> ......