• AngularJS快速入门指南09:SQL


      我们可以将之前章节中的代码用来从数据库中读取数据。


    通过PHP Server从MySQL数据库中获取数据

    <div ng-app="myApp" ng-controller="customersCtrl"> 
    
    <table>
      <tr ng-repeat="x in names">
        <td>{{ x.Name }}</td>
        <td>{{ x.Country }}</td>
      </tr>
    </table>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('customersCtrl', function($scope, $http) {
        $http.get("http://customers_mysql.php")
        .success(function (response) {$scope.names = response.records;});
    });
    </script>

    通过ASP.NET Server从MSSQL数据库中获取数据

    <div ng-app="myApp" ng-controller="customersCtrl"> 
    
    <table>
      <tr ng-repeat="x in names">
        <td>{{ x.Name }}</td>
        <td>{{ x.Country }}</td>
      </tr>
    </table>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('customersCtrl', function($scope, $http) {
        $http.get("http://customers_sql.aspx")
        .success(function (response) {$scope.names = response.records;});
    });
    </script>

    服务器代码示例

      下面几小节列出了几种不同的服务器端代码,用来从数据库中获取数据。

      1. 使用PHP和MySQL。返回JSON数据。

      2. 使用PHP和MS Access。返回JSON数据。

      3. 使用ASP.NET,VB和MS Access。返回JSON数据。

      4. 使用ASP.NET,Razor和SQL Lite。返回JSON数据。


    跨站HTTP请求

      从不同的服务器请求数据被称为跨站HTTP请求(即cross-site HTTP requests)。

      跨站HTTP请求在web开发中很普遍。许多页面常常需要从不同的服务器加载各种资源,如CSS,images和scripts等。

      在现代浏览器中,出于安全考虑,通过脚本进行跨站HTTP请求被严格限制,只允许访问同一站点内的数据。

      下面这行代码被用在PHP中,用来允许跨站HTTP请求。

    header("Access-Control-Allow-Origin: *");

    1. 使用PHP和MySQL

    <?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    
    $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
    
    $result = $conn->query("SELECT CompanyName, City, Country FROM Customers");
    
    $outp = "";
    while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
        if ($outp != "") {$outp .= ",";}
        $outp .= '{"Name":"'  . $rs["CompanyName"] . '",';
        $outp .= '"City":"'   . $rs["City"]        . '",';
        $outp .= '"Country":"'. $rs["Country"]     . '"}'; 
    }
    $outp ='{"records":['.$outp.']}';
    $conn->close();
    
    echo($outp);
    ?>

    2. 使用PHP和MS Access

    <?php
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=ISO-8859-1");
    
    $conn = new COM("ADODB.Connection");
    $conn->open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb");
    
    $rs = $conn->execute("SELECT CompanyName, City, Country FROM Customers");
    
    $outp = "";
    while (!$rs->EOF) {
        if ($outp != "") {$outp .= ",";}
        $outp .= '{"Name":"'  . $rs["CompanyName"] . '",';
        $outp .= '"City":"'   . $rs["City"]        . '",';
        $outp .= '"Country":"'. $rs["Country"]     . '"}'; 
        $rs->MoveNext();
    }
    $outp ='{"records":['.$outp.']}';
    
    $conn->close();
    
    echo ($outp);
    ?>

    3. 使用ASP.NET,VB和MS Access

    <%@ Import Namespace="System.IO"%>
    <%@ Import Namespace="System.Data"%>
    <%@ Import Namespace="System.Data.OleDb"%>
    <%
    Response.AppendHeader("Access-Control-Allow-Origin", "*")
    Response.AppendHeader("Content-type", "application/json")
    Dim conn As OleDbConnection
    Dim objAdapter As OleDbDataAdapter
    Dim objTable As DataTable
    Dim objRow As DataRow
    Dim objDataSet As New DataSet()
    Dim outp
    Dim c
    conn = New OledbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=Northwind.mdb")
    objAdapter = New OledbDataAdapter("SELECT CompanyName, City, Country FROM Customers", conn)
    objAdapter.Fill(objDataSet, "myTable")
    objTable=objDataSet.Tables("myTable")
    
    outp = ""
    c = chr(34)
    for each x in objTable.Rows
    if outp <> "" then outp = outp & ","
    outp = outp & "{" & c & "Name"    & c & ":" & c & x("CompanyName") & c & ","
    outp = outp &       c & "City"    & c & ":" & c & x("City")        & c & "," 
    outp = outp &       c & "Country" & c & ":" & c & x("Country")     & c & "}"
    next
    
    outp ="{" & c & "records" & c & ":[" & outp & "]}"
    response.write(outp)
    conn.close
    %>

    4. 使用ASP.NET,Razor和SQL Lite

    @{
    Response.AppendHeader("Access-Control-Allow-Origin", "*")
    Response.AppendHeader("Content-type", "application/json")
    var db = Database.Open("Northwind");
    var query = db.Query("SELECT CompanyName, City, Country FROM Customers");
    var outp =""
    var c = chr(34)
    }
    @foreach(var row in query)
    {
    if outp <> "" then outp = outp + ","
    outp = outp + "{" + c + "Name"    + c + ":" + c + @row.CompanyName + c + ","
    outp = outp +       c + "City"    + c + ":" + c + @row.City        + c + ","
    outp = outp +       c + "Country" + c + ":" + c + @row.Country     + c + "}"
    }
    outp ="{" + c + "records" + c + ":[" + outp + "]}"
    @outp
  • 相关阅读:
    Service Name Port Number Transport Protocol tcp udp 端口号16bit
    linux linux 互传文件 win 不通过 ftp sftp 往linux 传文件(文件夹)
    soft deletion Google SRE 保障数据完整性的手段
    Taylor series
    Taylor's theorem
    Moving average
    REQUEST
    Unix file types
    mysqld.sock
    Tunneling protocol
  • 原文地址:https://www.cnblogs.com/jaxu/p/4496224.html
Copyright © 2020-2023  润新知