如何通過執行SQL為低程式碼專案提速?

2022-09-30 18:00:24

見多了SQL為程式碼開發提速,那麼當低程式碼遇到SQL會擦出怎樣的火花呢?本文將低程式碼和SQL結合進行介紹,讓大家瞭解如何通過執行SQL為低程式碼專案提速。

背景

自從計算機誕生的一刻起,如何讓計算機能夠按照人類的需求進行工作,滿足人類的需要就成為了一個問題,於是便誕生了計算機語言。最初的計算機語言是由0和1構成的機器語言,用二進位制程式碼錶示的計算機能直接識別和執行的一種機器指令的集合,執行快,但是不容易使用,上手困難且難易理解。為了克服機器語言的缺點,人們將機器指令的程式碼用英文助記符來表示,代替機器語言中的指令和資料。便誕生了第二代程式語言——組合語言,組合語言在一定程度中克服了機器語言難以學習使用的缺點,同時保證了執行速度快的優點,但是組合語言的通用性,可讀性還是很低。於是就誕生了以人類的日常語言為基礎的一種程式語言,就是第三代程式語言——高階語言,像我們熟知的JAVA、JS、C#等都屬於第三代程式語言。

高階語言與計算機的硬體結構及指令系統無關,它有更強的表達能力,可方便地表示資料的運算和程式的控制結構,能更好地描述格中演演算法,而且更易學習掌握,也是目前被程式設計師所使用的最為廣泛的語言,但是,第三代語言對於業務人員來說還是難以理解。需要在程式設計上有專門的訓練才能使用。於是便誕生了第四代語言,即面向問題的語言。第四代語言是非常高階的語言,使用者只需要簡單的培訓即可參與程式設計,解決特定的問題。同時,第四代語言比第三代語言更接近日常語言,更容易程式設計,更廣泛地被非專業程式設計師所使用。像我們今天的主角——SQL就屬於第四代語言,使用者並不需要告訴計算機要怎麼做,只需要告訴它執行命令內容即可。而低程式碼平臺誕生可以追溯到第四代語言,第四代語言的主要特點就是簡單易學、上手快。那使用第四代語言SQL再加上本來開發週期就短的低程式碼,能擦出怎麼樣的火花呢?

SQL與低程式碼的碰撞

我們先來看看沒有使用SQL功能的低程式碼是如何開發一個專案與資料庫進行互動的,這裡使用企業級低程式碼開發平臺-活字格為例向大家介紹。活字格中是有資料庫這個概念的,而且活字格在更新迭代的過程中也有從「無執行SQL功能」到「有執行SQL功能」的一個變化,這一過程正好可以作為展示執行SQL為低程式碼提速的最好例子。
早些時候,大多數的低程式碼平臺沒有直接執行SQL功能,平臺通過一些類似SQL功能去實現資料處理,比如活字格中的odata、資料表操作等功能,以實現執行資料表基本的DML操作。但是一旦明對更加複雜的業務場景,需要執行SQL才能實現時,就不免顯得捉襟見肘。其效能對比執行SQL命令也有顯著差距,可以看到使用執行SQL命令原本需要73秒才能做完的插入5000行資料操作,現在1.5秒的時間就可以完成了。

由此可見在低程式碼專案中執行SQL可以大大提升低程式碼專案的搭建速度,提升低程式碼開發效率,使得開發效率本來就較高的低程式碼專案效率更高,那說了這麼多執行SQL的優點,如何在低程式碼專案中執行SQL呢。還是以活字格這款企業級低程式碼開發平臺來舉例。
使用SQL功能可以實現很多複雜的功能,比如:編寫和呼叫儲存過程、建立臨時表、建立表索引、建立多個聯合查詢等。這裡找兩個簡單的例子給大家介紹一下如何在低程式碼專案中使用SQL。現在有資料表的設計如下:課程表(課程號、課程名、學分)、學生表(學號、姓名、性別、專業)、分數表(學號、課程號、分數)。然後現在的需求是輸入課程名和學生名來查詢這個學生的分數,那在活字格中怎麼做呢,我們一起來操作下。
首先設定前端頁面,將活字格中的文字方塊單元格型別,按鈕單元格型別,設定在活字格的設計器頁面中。

新建一個伺服器端命令,增加引數學生名,和課程名引數,命令中新建執行SQL命令,資料庫選擇內建庫(如果使用外聯資料庫也可以通過連線字串直接在外聯資料庫中操作),新增學生名和課程名引數,引數值直接從伺服器端命令接收的引數值中獲取即可,寫SQL語句如下SELECT 分數表.分數 FROM 分數表 join 課程表 on 分數表.課程號 = 課程表.課程號 join 學生表 on 分數表.學號 = 學生表.學號 where 學生表.姓名=@學生名 and 課程表.課程名 =@課程名;將執行SQL結果,也就是返回值寫到變數SQL陣列中。由於執行SQL命令返回的結果是一個json物件陣列,所以需要使用迴圈命令去取得陣列中的每個Json物件,再去取值即可。這裡範例中當確定了姓名和課程名之後,分數就確定了,也就是SQL查詢的結果中只有一條記錄,所以迴圈第一次就可以使用返回命令將分數的值返回出來。

在頁面中的按鈕再使用呼叫伺服器端命令,呼叫構建好的SQL命令。學生名和課程名選擇設計好的文字方塊,將返回值返回到頁面中的分數。這樣就實現了這個需求了。

我們可以看一下執行效果,學生名輸入張三,課程名輸入語文,點選查詢,分數便顯示88。

這樣,這個需求在低程式碼中就可以通過執行SQL實現了。我們來換一下需求,改為輸入一個學生名查詢出這個學生全部課程的成績。還是以活字格為例,我們只需對上面的一些步驟做更改即可。
首先,設定頁面的步驟中,將課程名和課程名後的文字方塊刪除掉,分數區域改為設定一個表格,表格中有課程列和分數列。

伺服器端命令中刪除課程名引數,伺服器端命令中的執行SQL命令也刪除課程名引數,修改SQL語句如下SELECT 分數表、分數、課程表、課程名 FROM、分數表 join 課程表 on 分數表、課程號 = 課程表、課程號 join 學生表 on 分數表、學號 = 學生表、學號 where 學生表、姓名=@學生名,直接將查詢的陣列結果返回出去。

在前端呼叫時,將呼叫伺服器端命令的結果儲存在SQL陣列變數中,然後直接使用匯入Json資料到表格命令將json物件陣列匯入到表格。

可以看到,在瀏覽器中文字方塊輸入張三,點選查詢,即可查詢出張三全部的課程和分數。由此可見,通過執行SQL可以大大的提升低程式碼專案的開發效率,在需求變化是也能很高速的通過修改SQL語句和低程式碼工程實現更改後的需求。

當然,這裡只舉了兩個簡單的例子來為大家展示如何通過執行SQL為低程式碼專案提速,一些更復雜的需求如編寫和呼叫儲存過程,建立臨時表等,都是可以通過執行SQL在低程式碼專案中實現的。大家如果感興趣得話,可以找找相關的低程式碼產品來更詳細的瞭解一下。

如果想了解更多地低程式碼技術知識存取:https://help.grapecity.com.cn/display/lowcode