Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » SQL Anywhere Web 服务

 

Web 服务快速入门

以下过程介绍了如何新建一个数据库、如何在启用 HTTP 服务器的情况下启动 SQL Anywhere 数据库,以及如何使用任何常用 Web 浏览器访问此数据库。

♦  创建和访问简单 HTML Web 服务
  1. 在命令提示符处,运行以下命令以启动个人 Web 服务器。将 samples-dir 替换为示例数据库的实际位置。-xs http(port=80) 选项将指示数据库服务器监听 HTTP 请求。如果端口 80 上已有 Web 服务器在运行,则将另一个端口号(例如 8080)用于此演示。

    dbeng11 -xs http(port=80) samples-dir\demo.db

    HTTP 通信链接的很多属性都由 -xs 选项的参数来控制。请参见-xs 服务器选项

  2. 使用相应的 -xs 选项参数启动数据库服务器,并使用 CREATE SERVICE 语句创建 Web 服务以响应进来的请求。

    启动 Interactive SQL。以 DBA 身份连接到 SQL Anywhere 示例数据库。执行以下语句。

    CREATE SERVICE HTMLtable
    TYPE 'HTML'
    AUTHORIZATION OFF
    USER DBA
    AS SELECT * FROM Customers;

    此语句创建一个名为 HTMLtable 的 Web 服务。这个简单的 Web 服务会返回语句 SELECT * FROM Customers 的结果,并将输出自动转换为 HTML 格式。因为关闭了授权,所以从 Web 浏览器访问表无需任何权限。请参见创建 Web 服务CREATE SERVICE 语句

  3. 启动 Web 浏览器。

  4. 浏览至 URL [external link] http://localhost:80/demo/HTMLtable。使用启动数据库服务器时指定的端口号。

    Web 浏览器将显示数据库服务器返回的 HTML 文档的主体。缺省情况下,会将结果集的格式设置为 HTML 表。

♦  创建和访问简单的 XML Web 服务
  1. 在命令提示符处,运行以下命令以启动个人 Web 服务器。将 samples-dir 替换为示例数据库的实际位置。-xs http(port=80) 选项将指示数据库服务器监听 HTTP 请求。如果端口 80 上已有 Web 服务器在运行,则将另一个端口号(例如 8080)用于此演示。

    dbeng11 -xs http(port=80) samples-dir\demo.db

    HTTP 通信链接的很多属性都由 -xs 选项的参数来控制。请参见-xs 服务器选项

  2. 使用相应的 -xs 选项参数启动数据库服务器,并使用 CREATE SERVICE 语句创建 Web 服务以响应进来的请求。

    启动 Interactive SQL。以 DBA 身份连接到 SQL Anywhere 示例数据库。执行以下语句:

    CREATE SERVICE XMLtable
    TYPE 'XML'
    AUTHORIZATION OFF
    USER DBA
    AS SELECT * FROM Customers;

    此语句创建一个名为 XMLtable 的 Web 服务。这个简单的 Web 服务会返回语句 SELECT * FROM Customers 的结果,并将输出自动转换为 XML 格式。因为关闭了授权,所以从 Web 浏览器访问表无需任何权限。请参见创建 Web 服务CREATE SERVICE 语句

  3. 启动 Web 浏览器。

  4. 浏览至 URL [external link] http://localhost:80/demo/XMLtable。使用启动数据库服务器时指定的端口号。

    • localhost:80 定义要使用的 Web 主机名和端口号。

    • demo 定义要使用的数据库名。您使用的是 demo.db

    • XMLtable 定义要使用的服务名。

    Web 浏览器将显示数据库服务器返回的 XML 文档的主体。由于未包含任何格式设置信息,您将看到原始 XML,包括标记和属性。

  5. 也可以从常用编程语言访问 XMLtable 服务。例如,以下 C# 短程序使用 XMLtable Web 服务:

    using System.Xml;
    
    static void Main(string[] args)
    {
      XmlTextReader reader =
        new XmlTextReader( "http://localhost:80/demo/XMLtable" );
    
      while( reader.Read() )
      {
        switch( reader.NodeType )
        {
        case XmlNodeType.Element:
          if( reader.Name == "row" )
          {
            Console.Write(reader.GetAttribute("ID")+" ");
            Console.WriteLine(reader.GetAttribute("Surname"));
          }
          break;
        }
      }
      reader.Close();
    }
  6. 此外,如以下示例所示,还可从 Python 访问同一 Web 服务:

    import xml.sax
    
    class DocHandler( xml.sax.ContentHandler ):
      def startElement( self, name, attrs ):
        if name == 'row':
          table_id = attrs.getValue( 'ID' )
          table_name = attrs.getValue( 'Surname' )
          print '%s %s' % ( table_id, table_name )
    
    parser = xml.sax.make_parser()
    parser.setContentHandler( DocHandler() )
    parser.parse( 'http://localhost:80/demo/XMLtable' )

    将此代码保存在名为 DocHandler.py 的文件中。要运行该应用程序,请输入类似以下的命令:

    python DocHandler.py
♦  创建和访问简单的 JSON web 服务
  1. 在命令提示符处,运行以下命令以启动个人 Web 服务器。将 samples-dir 替换为示例数据库的实际位置。-xs http(port=80) 选项将指示数据库服务器监听 HTTP 请求。如果端口 80 上已有 Web 服务器在运行,则将另一个端口号(例如 8080)用于此演示。

    dbeng11 -xs http(port=80) samples-dir\demo.db

    HTTP 通信链接的很多属性都由 -xs 选项的参数来控制。请参见-xs 服务器选项

  2. 使用相应的 -xs 选项参数启动数据库服务器,并使用 CREATE SERVICE 语句创建 Web 服务以响应进来的请求。

    启动 Interactive SQL。以 DBA 身份连接到 SQL Anywhere 示例数据库。执行以下语句:

    CREATE SERVICE JSONtable
    TYPE 'JSON'
    AUTHORIZATION OFF
    USER DBA
    AS SELECT * FROM Customers;

    此语句创建一个名为 JSONtable 的 Web 服务。这个简单的 Web 服务会返回语句 SELECT * FROM Customers 的结果,并将输出自动转换为 JavaScript Object Notation 格式。因为关闭了授权,所以从 Web 浏览器访问表无需任何权限。请参见创建 Web 服务CREATE SERVICE 语句

  3. 启动 Web 浏览器。

  4. 浏览至 URL [external link] http://localhost:80/demo/JSONtable。使用启动数据库服务器时指定的端口号。

    • localhost:80 定义要使用的 Web 主机名和端口号。

    • demo 定义要使用的数据库名。您使用的是 demo.db

    • JSONtable 定义要使用的服务名。

    Web 浏览器将允许您保存数据库服务器返回的 JSON 响应文档。将响应保存到文件中。

  5. 如果您使用文本编辑器来查看包含响应文档的文件,您将在结果集中看到以下的数组符号。

    [
            {
                    "ID": 101,
                    "Surname": "Devlin",
                    "GivenName": "Michaels",
                    "Street": "114 Pioneer Avenue",
                    "City": "Kingston",
                    "State": "NJ",
                    "Country": "USA",
                    "PostalCode": "07070",
                    "Phone": "2015558966",
                    "CompanyName": "The Power Group"
            },
            {
                    "ID": 102,
                    "Surname": "Reiser",
                    "GivenName": "Beth",
                    "Street": "33 Whippany Road",
                    "City": "Rockwood",
                    "State": "NY",
                    "Country": "USA",
                    "PostalCode": "10154",
                    "Phone": "2125558725",
                    "CompanyName": "AMF Corp."
            },
    .
    .
    .
            {
                    "ID": 665,
                    "Surname": "Thompson",
                    "GivenName": "William",
                    "Street": "19 Washington Street",
                    "City": "Bancroft",
                    "State": "NY",
                    "Country": "USA",
                    "PostalCode": "11700",
                    "Phone": "5165552549",
                    "CompanyName": "The Apple Farm"
            }
    ]
其它入门资源

示例包含在 samples-dir\SQLAnywhere\HTTP 目录中。

CodeXchange 上提供了其它示例,网址是 [external link] http://www.sybase.com/developer/codexchange

另请参见