iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
1
Software Development

以資料庫為開發核心,利用通用 API 玩轉後端資料存取的概念與實作系列 第 23

Day23:各種存取資料庫方法的簡介

本系列文的主旨,是在討論開發企業資訊系統時,和資料庫的串接方式,也就是如何連上資料庫並取得資料。至於取得資料後,美化排版並顯示在各式的端點設備上,這屬於前端開發的議題,本文不多著墨。

這個議題也是每一個程式開發工具都必須具備的功能,關於資料庫存取的技術,近一點來說,主要有 2個大方向

區域網路的連線字串方式
網際網路的 RESTFul API 架構

在 Restful API 這種因應網際網路無狀態,所演化出來的前後端完全分離的存取架構前,完全就是 [連線字串式] 連接資料庫的天下,也是主流技術。現在應該也還是大部分 Client/Server AP 及網站的主要核心技術。

連線字串式

無論是 Client/Server 或是網站後台(如 PHP、ASP.NET 等),使用連線設定的方式大同小異,大致上就是

1.確認連接字串
2.建立SqlConnection
3.確認查詢字串
4.DataSet 承接回傳的資料(或執行 sql command)

下面參考網路上的一些範例如下

C# 的設定方式

            try
            {
                // step 1 . 宣告連接字串
                string Constr = @"Persist Security Info=False;Integrated Security=true;
                     Initial Catalog=NorthWind;Server=.\SQLExpress";

                // step 2 . 建立SqlConnection
                SqlConnection conn = new SqlConnection(Constr);

                // step 3 . 宣告查詢字串
                string Sqlstr = "select * from zen_customer";

                // step 4. 建立SqlDataAdapter
                SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn);

                // step 5. 建立DataSet來儲存Table
                DataSet ds = new DataSet();
              
                // step 6. 將DataAdapter查詢之後的結果,填充至DataSet
                da.Fill(ds);                

                // step 7 . 用DataGridView1 顯示出來
                this.dataGridView1.DataSource = ds.Tables[0].DefaultView;               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

PHP 的設定範例

<?php
    $dbhost = '127.0.0.1';
    $dbuser = 'mysql_user';
    $dbpass = 'mysql_password';
    $dbname = 'mysql_databaseName';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');
    mysql_query("SET NAMES 'utf8'");
    mysql_select_db($dbname);
    $sql = "SELECT * FROM `zen_customer` WHERE `cname` like 'Michael';";
    $result = mysql_query($sql) or die('MySQL query error');
    while($row = mysql_fetch_array($result)){
        echo $row['name'];
    }
?>

RESTful API

關於 RESTful API 的定義,請參考維基百科的定義說明
https://zh.wikipedia.org/wiki/%E8%A1%A8%E7%8E%B0%E5%B1%82%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2
講得通俗一點,就是透過 http(精確說是 url 就是一串網址),去後端主機取得資料或資源的一種網路服務。
我在前面的
Day21:一招半式闖江湖(一):通用 api 架構說明及第一支通用 api
Day22:一招半式闖江湖(二):再論通用 API 及實作範例
有簡單的說明,請先參閱。

下面是一段 Vue.js 前端呼叫 api 的範例

            getData() {
                const params = {
                    para01: 'zen_department',
                    para02: 'did',
                    para03: 'P',
                    para04: `${this.cur_page}^${this.cur_size}^did^*^dname like ''%${this.fulltextsearch}%''^basm01`
                }
                this.$axios.post('/api/orm_api/1/', qs.stringify(params)).then((res) => {
                    this.loading = false;
                    if(res.length && res[0]){
                        this.tableData = res[0];
                        if(typeof res[0][0] === 'object'){
                            this.total = res[0][0]._TotalRec;
                        }
                    }
                })
            },

資料庫連線方式從早期的

ado -> odbc(jdbc) -> ado.net -> RESTful API

不斷的演進,目前看來,RESTful API 遲早會一統江湖,又因為它只是一個架構,並無強制規範,所以可以自行實作,可以說是優點多多,建議各位應盡可能地轉換到此架構。感謝您的收看,明天繼續加油。


上一篇
Day22:一招半式闖江湖(二):再論通用 API 及實作範例
下一篇
Day24:ORM 的概念及 Store Procedure 化的說明
系列文
以資料庫為開發核心,利用通用 API 玩轉後端資料存取的概念與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言