iT邦幫忙

0

SQL Syntax 寫在前端還是後端?

sql

各位大大好 小弟最近在學習前端搭配後端做CRUD的基礎(Angular + MS SQL)目前CRUD的功能都已經可以正常運作,WebAPI 是使用 C# Entity Framework,以上都是查詢Google或是Youtube邊看邊學習來的,遇到的問題是如果遇到SQL的查詢語法例如distinct, join, group by等等,要做資料篩選的時候要從前端著手還是後端呢? 後端是使用LINQ是嗎??
@@ 搞不太清楚 還請大神們解惑

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2019-08-01 11:31:47 檢舉
.net 我不熟

不過 crud 基本上都是在後端
fillano iT邦超人 1 級 ‧ 2019-08-01 11:41:26 檢舉
你看看Angular哪裡可以下SQL啦XD
fillano iT邦超人 1 級 ‧ 2019-08-01 11:44:15 檢舉
你已經用了Entity Framework,還不知道他是什麼嗎?簡單說,它跟Web API一點關係也沒有。他提供一套語法讓你操作資料庫,你不需要自己寫SQL的。自己寫SQL很容易有安全問題,尤其是初學者。
小火車 iT邦新手 4 級 ‧ 2019-08-01 13:47:25 檢舉
謝謝 大神的解惑
再怎樣都不要由前端送出SELECT UPDATE DELETE INSERT的語句回後端直接執行
再怎樣都不要由前端送出SELECT UPDATE DELETE INSERT的語句回後端直接執行
再怎樣都不要由前端送出SELECT UPDATE DELETE INSERT的語句回後端直接執行

很重要所以講三次,後面再加一億次
你就算不顧系統安全,也不要拿你自己的未來開玩笑,出一次事,你就黑了,就像美國昨天發生的的CapitalOne事件,你只要出一次事,一輩子就黑了
優悠 iT邦新手 3 級 ‧ 2019-08-02 09:00:11 檢舉
前端任何人都看的到,後端自己公司才行,所以百分百都寫在後端,前端最多傳參數給後端,使用前會先驗證等等的安全性考量,最後才會執行語法。
甲土豆 iT邦新手 5 級 ‧ 2019-08-02 14:15:18 檢舉
笑了,前端去玩數據庫,我最近也在玩 webApp 然後我是 vue 去實作 搭配 PHP laravel ,基本上 前端要的任何數據 都經過後端 API 跟他獲取的
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
TimHsiao
iT邦新手 5 級 ‧ 2019-08-01 12:27:32
最佳解答

查詢語法裡面有要查詢的關鍵字譬如where後面的條件,當然是前端送出的,然後在後端和distinct, join, group by等關鍵字組合成完整的查詢後吐出資料送回給前端,這是一般的CRUD,SQL injection就是前端亂塞資料產生的安全問題,用了Framework不需要自己組SQL語法,會適當的處理前端資料,而且不會被欄位名稱跟資料型態弄得很頭大,但是背後運作還是跟一般CRUD一樣。

2
Homura
iT邦高手 1 級 ‧ 2019-08-01 13:31:20

要做資料篩選的時候要從前端著手還是後端呢

我知道很多喜歡一次傳全部的資料然後再使用前端filter來過濾
但是你資料表有10萬甚至100萬筆資料時
難道每次進入時就要讀取這麼大量的資料嗎?
你的Server或資料庫會掛掉吧....
請一定要從後端篩選完資料....

後端是使用LINQ是嗎??

EF使用LINQ沒錯

小火車 iT邦新手 4 級 ‧ 2019-08-01 13:48:11 檢舉

謝謝 大神的解惑 看來要再多學習EF LINQ的語法

Homura iT邦高手 1 級 ‧ 2019-08-01 14:13:53 檢舉

小康
還有LINQ不是只有EF能用
只要有實作IEnumerable的物件都行
例如List<T>, Dictionary<T,T>

TimHsiao iT邦新手 5 級 ‧ 2019-08-01 16:48:53 檢舉

早期的asp.net寫法很喜歡這樣搞,程式好寫,但是效能很差

3

正常來講,都不可能在前端丟sql語法進來的。
因為這樣做會有很大的安全性問題。

畢竟所謂的前端,就是在客戶那邊運行的東西為主。是可被修改的。

當然這點要先給你了解何謂「前端」何謂「後端」才行。

因為我曾經教過一個很另類的解答方式。
寫給會員用的程式就是前端,寫給管理者用的就是後端。

你因該不會這樣解釋吧。

小魚 iT邦大師 1 級 ‧ 2019-08-01 14:50:23 檢舉

很多人 前台、後台 跟 前端、後端 傻傻分不清楚...

1
舜~
iT邦高手 1 級 ‧ 2019-08-01 13:35:12

Angular 是個前端框架碰不到資料庫的,
跟資料庫做交涉是後端的API C# Entity Framework

不管簡單來是複雜的SQL查詢/更新/刪除都是在後端

您可新增新的API的action name來處理新的需求(可能處理到比較複雜的sql或邏輯)

我要發表回答

立即登入回答