⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlserver实例-1.htm

📁 微软数据库开发梦工场多媒体教学-sql server篇.rar,是多媒体教学的
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<P class=boe_text><font color="#FFFFFF"><IMG height=393 src="SQLSERVER实例-1.files/cs_5.jpg" width=591 
border=0></font></P>
<P class=boe_text><font color="#FFFFFF"><B><SPAN lang=EN-US 
style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">图 
  5. 连接设计器</SPAN></B></font></P>
<P class=boe_head3><font color="#FFFFFF">连接属性的设定</font></P>
<P 
class=boe_text><font color="#FFFFFF">从连接设计器的画面上我们可以发现很多连接属性,他们代表什么意思呢?在讲述这些问题之前,我想告诉大家:所有这些属性的设定都可以通过DBSETPROP()函数,所有这些属性值的获取都可以通过DBGETPROP()函数得到。下面,我们简要介绍几个属性:</font></P>
<TABLE width="74%" border=0>
  <TBODY>
    <TR> 
      <TD width="100%" bgcolor="#CCCCCC">
          <OL>
          <LI> 
            <P class=boe_list><font color="#000000">异步执行。默认值为 .F.。同步执行是指:通过连接传送到后端的命令会被一句一句地执行,前一句没有执行完毕后一句就不会被执行;而同步执行是指:当通过连接发出命令后,不管后端是否完成并返回结果,客户端程序可以继续往下走。 
              </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">超时间隔-空闲(分)。默认值是 0。设定一个非 0 
              值时,一个连接如果在这段时间内没被使用,Visual FoxPro 将使它休眠,再次使用该连接时 Visual FoxPro会激活它。注意使用该属性,因为它常常使您的应用程序产生不明不白的错误,如"Connectivity 
              error: unable to retrieve specific error information. Driver is 
              probably out of resources."实际上现在 ODBC 提供了 POOL 的功能,这些问题可由 ODBC 自行解决,我们不用操心。 
              </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">超时间隔-连接(秒)。默认值是 0。设定一个非 0 
              值时,指在这个时间段内Visual FoxPro将试图连接到服务器,如果不成功,Visual FoxPro将产生一个错误。 </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">显示 ODBC 登录提示。在应用程序中,我们总不希望有系统弹出登录窗口,这样于形象不利、于程序的安全性不利,特别是设计 
              COM 对象时,由于无人看护,更不希望登录窗口的弹出,Visual FoxPro 为我们提供了三种选择,笔者经常使用“从不显示”。 
              </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">显示错误信息。如果设定为 .t.,任何 ODBC 错误将以 
              Messagebox 窗口显示出来;反之,ODBC 错误有用户自行处理。显然我们基本上使用默认设置 .f.。 </font></P>
            </LI>
          </OL>
        </DIV></TD>
    </TR>
  </TBODY>
</TABLE>
<P class=boe_note><font color="#FFFFFF">提示:在Visual FoxPro中很多关于数据处理方面的设定,(如:set 
  delete)都是限于数据工作期的,而连接被激活后可以在多个数据工作期内公用。&nbsp;</font></P>
<P class=boe_head2><font color="#FFFFFF">远程视图</font></P>
<P class=boe_head3><font color="#FFFFFF">弱水三千,取一瓢饮——条件视图</font></P>
<P class=boe_text><font color="#FFFFFF">在前文我们已经建立了两个远程视图,您也许发现这种整个把远程表读取过来的做法执行效果很好,其实不然。我有两大理由:</font></P>
<TABLE width="75%" border=0>
  <TBODY>
    <TR> 
      <TD width="100%" bgcolor="#CCCCCC"> 
          <OL>
          <LI> 
            <P class=boe_list><font color="#000000">设想如果后端表很大(Customers 只有 91 
              条记录),有几万、几十万条记录,结果会这样? </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">设想如果网络用户很多,网路很繁忙,结果会怎样? </font><font color="#FFFFFF"> 
              </font></P>
            </LI>
          </OL>
        </DIV></TD>
    </TR>
  </TBODY>
</TABLE>
<P 
class=boe_list><font color="#FFFFFF">Client\Server设计的一个重要的课题就是使网络流量最小化,所以在设计远程视图时就要考虑这一解决问题。我们的想法是使远程视图仅下载有必要的信息,这就叫:弱水三千,取一瓢饮。例如:</font></P>
<P class=boe_code><font color="#FFFFFF">CREATE SQL VIEW VCustomers&nbsp;<BR>
  &nbsp; REMOTE CONNECTION Northwind SHARE ;<BR>
  &nbsp; AS SELECT *&nbsp; FROM Customers&nbsp;<BR>
  &nbsp; WHERE customerid LIKE 'ALFKI'</font></P>
<P class=boe_list><font color="#FFFFFF">我们在 WHERE子句中加入条件“customerid LIKE 'ALFKI'”,现在我们发现只有一条记录从远端被下载。您也与已经发现这中间的不足:这个远程视图太死板了——只能为 
  Customerid 类似于'ALFKI'的记录提供服务,是不是可以把 'ALFKI'作为一个参数,供使这个远程视图更灵活,服务面更广。</font></P>
<P class=boe_list><font color="#FFFFFF">可以,Visual FoxPro支持这样的远程视图:</font></P>
<P class=boe_code><font color="#FFFFFF">CREATE SQL VIEW VCustomers ;<BR>
  &nbsp; REMOTE CONNECTION Northwind SHARE ;<BR>
  &nbsp; AS SELECT * FROM Customers ;<BR>
  &nbsp; WHERE customerid LIKE ?cCustomerID&nbsp;</font></P>
<P class=boe_list><font color="#FFFFFF">如果您打开远程视图或对已打开的远程视图执行REQUERY()、REFRESH()函数,Visual 
  FoxPro会查找是由存在名为cCustomerID的变量。如果存在,Visual FoxPro 自动把变量值填入远程视图的SQL语句中;如果变量不存在,Visual 
  FoxPro将弹出如下窗口询问变量值。</font></P>
<P class=boe_list><font color="#FFFFFF"><IMG height=124 src="SQLSERVER实例-1.files/cs_6.jpg" width=488 
border=0></font></P>
<P 
class=boe_list><font color="#FFFFFF">在实际开发应用程序中,我们会经常实现设定远程视图参数,在需要其它信息时,改变参数值,再用REQUERY()函数刷新客户端的数据;远程视图参数不仅可以填入普通数据,还可以使用统配符,如下:</font></P>
<P class=boe_code><font color="#FFFFFF">cCustomerID='ALFKI'<BR>
  USE Vcustomers<BR>
  BROWSE<BR>
  cCustomerID='%B%'<BR>
  REQUERY('Vcustomers')<BR>
  BROWSE</font></P>
<P class=boe_list><font color="#FFFFFF">这里有以下问题点大家必须注意:</font></P>
<TABLE width="73%" border=0 bgcolor="#CCCCCC">
  <TBODY>
    <TR> 
      <TD width="100%" bgcolor="#CCCCCC"> 
          <OL>
            
          <LI> 
            <P class=boe_list><font color="#000000">远程视图参数只能在WHERE字句中设定,其他的连接子句、分组字句、排序子句都不支持这一特性。比如不可以出现 
              Order by ?cOrder。(有传言说 Visual FoxPro 7 支持参数加入排序子句,但笔者还未及尝试)。 </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">一个远程视图可以设定多个参数。实例见下面的代码。 </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">远程视图的SELECT-SQL语句必须是以后端数据库的语法为标准。例如,SQL 
              Server以单引号确认字符串,而Visual FoxPro可使用双引号、方括号、单引号确认字符串,那么如下语句是错误:<BR>
              CREATE SQL VIEW VCustomers REMOTE CONNECTION Northwind SHARE ;<BR>
              &nbsp; AS SELECT * FROM Customers WHERE customerid LIKE "ALFKI"<BR>
              又如,Visual FoxPro中删除字符型字段的空格可使用ALLTR()函数,但远程视图的SELECT-SQL中不能用任何Visual 
              FoxPro的函数,所以要实现上述功能,应如下使用SQL Server的函数:<BR>
              CREATE SQL VIEW VCustomers REMOTE CONNECTION Northwind SHARE ;<BR>
              &nbsp; AS SELECT customerid,LTRIM(RTRIM(CompanyName)) FROM Customers 
              WHERE customerid LIKE 'ALFKI' </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">第三点中我们强调了远程视图构建时必须使用后端数据库认识的Select-SQL。当远程视图被打开,成为Visual 
              FoxPro的光标时,就可以对它使用Visual FoxPro的命令与函数。 </font></P>
            </LI>
          </OL>
        </DIV></TD>
    </TR>
  </TBODY>
</TABLE>
<P class=boe_code><font color="#FFFFFF">CREATE SQL VIEW VEmployees;<BR>
  &nbsp; REMOTE CONNECTION Northwind SHARE<BR>
  &nbsp;AS SELECT EmployeeID,Birthdate FROM Employees<BR>
  &nbsp;WHERE BirthDate &gt;?dBirthdate1 AND BirthDate &lt;?dBirthdate2<BR>
  dBirthdate1='19540101'<BR>
  dBirthdate2='19601231'<BR>
  USE VEmployees<BR>
  BROWSE<BR>
  *本例对日期型字段Birthdate使用了两个参数,并请注意日期型参数的传递。<BR>
  CREATE SQL VIEW VEmployees1;<BR>
  &nbsp; REMOTE CONNECTION Northwind SHARE;<BR>
  &nbsp; AS SELECT EmployeeID, BirthDate, Country FROM Employees;<BR>
  &nbsp; WHERE birthDate &gt; ?dBirthdate AND Country = ?cCountry<BR>
  dBirthdate='19601231'<BR>
  cCountry='uk'<BR>
  USE VEmployees1<BR>
  BROWSE<BR>
  *本例对两个字段设定了参数</font></P>
<P class=boe_head3><font color="#FFFFFF">只下载有用的字段</font></P>
<P class=boe_list><font color="#FFFFFF">上文中我们使用 SELECT * 从远端一古脑儿把所有列都下载到客户机,这样做不好。原因如下:</font></P>
<TABLE width="74%" border=0>
  <TBODY>
    <TR> 
      <TD width="100%" bgcolor="#CCCCCC"> 
          <OL>
          <LI> 
            <P class=boe_list><font color="#000000">对远程数据操作时并不是所有的列(字段)都会被我们用到,特别是备注字段、大二进制字段。 
              </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">在视图阶段就可以通过计算有关列得到更有用的信息,见下面的代码。 
              </font></P>
          <LI> 
            <P class=boe_list><font color="#000000">明确指定列信息有助于Visual FoxPro对远程数据表的版本控制。如果使用 
              SELECT *,那么只有在远程数据表增加字段时Visual FoxPro才知道,其他如减少、变更列的结构Visual FoxPro都不会知道。 
              </font><font color="#FFFFFF"> </font></P>
            </LI>
          </OL>
        </DIV></TD>
    </TR>
  </TBODY>
</TABLE>
<P 
class=boe_list><font color="#FFFFFF">例如:远程表中有FirstName,LastName列,我们在制作报表时只需要全名就可以了,那么我们解可以将它们相加成为一个新的列。</font></P>
<P class=boe_code><font color="#FFFFFF">CREATE SQL VIEW VEmployees1 ;<BR>
  &nbsp; REMOTE CONNECTION Northwind SHARE ;<BR>
  &nbsp; AS SELECT EmployeeID, FirstName +' '+ LastName AS Name, Title ;<BR>
  &nbsp; FROM Employees</font></P>
<P class=boe_head3><font color="#FFFFFF">多表连接形成的远程视图</font></P>
<P class=boe_text><font color="#FFFFFF">远程视图不仅支持远程一个表的操作,它还支持多表连接,如下:</font></P>
<P class=boe_code><font color="#FFFFFF">CREATE SQL VIEW VEmployeeTerritories ;<BR>
  REMOTE CONNECTION Northwind SHARE ;<BR>
  AS SELECT Territories.TerritoryID, Territories.TerritoryDescription, Employees.EmployeeID,;<BR>
  Employees.LastName, Employees.FirstName;<BR>
  FROM Territories INNER JOIN;<BR>
  EmployeeTerritories ON ;<BR>
  Territories.TerritoryID = EmployeeTerritories.TerritoryID INNER JOIN;<BR>
  Employees ON EmployeeTerritories.EmployeeID = Employees.EmployeeID</font></P>
<P class=boe_text><font color="#FFFFFF">远程视图还支持自连接,如下:</font></P>
<P class=boe_code><font color="#FFFFFF">CREATE SQL VIEW VEmployeeReportTO ;<BR>
  REMOTE CONNECTION Northwind SHARE ;<BR>
  AS SELECT Employees.EmployeeID as 领导工号,;<BR>
  Employees.FirstName+' '+ Employees.LastName as 领导,;<BR>
  Employees_a.FirstName +' '+ Employees_a.LastName as 下属,;<BR>
  Employees_a.ReportsTo as 上级领导工号;<BR>
  FROM Employees Employees INNER JOIN;<BR>
  Employees Employees_a ON ;<BR>
  Employees.EmployeeID = Employees_a.ReportsTo;<BR>
  ORDER BY Employees_a.ReportsTo</font></P>
<P class=boe_note><font color="#FFFFFF">从上面的语句大家可以发现:Visual FoxPro中的 SQL 与SQL 
  Server 中的 SQL 十分相似,这方便了学习,但千万别陷入了“温柔陷阱”!</font></P>
<P class=boe_text><font color="#FFFFFF"> </font></P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -