【中階級】-內建SQL使用

閱讀時間約 15 分鐘

在Visual Studio裡有內建的SQL幫助我們存資料,SQL指的是資料庫,那麼我們就用註冊會員這個例子來看一下怎麼使用內建的SQL吧~

備註:由於Code目前沒有可以選擇C#部分,因此我先用C暫代,還有內建SQL部分,我就會選擇SQL語法

Step 1:建立資料庫

在左邊伺服器總管選擇「資料連結」按滑鼠右鍵後,選擇「加入連接」就會跳出視窗,此時就可以設定我們的資料庫檔名,並且登入伺服器用什麼方式,目前我使用的都是Windows驗證,畢竟是練習用,如果要更安全一點當然就一定要選擇SQL Server認證去設定使用者名稱和密碼部分,選好後就確定。若是新建的資料庫檔名,它就會跳出視窗說,這不存在是否要建立,此時就按「是」就對了!

建立資料庫-1

建立資料庫-1

建立好後,伺服器總管這邊的資料連結就會多了一個剛剛我們設定的資料庫檔名

建立資料庫-2

建立資料庫-2

Step 2:連結資料庫

右上方有個方案總管,這邊選取App.config,進入程式中去增加第2步的紅框,這邊就是連結資料庫的參數設定,那麼connectString後面要填什麼呢?

連結資料庫-1

連結資料庫-1

點選Account.mdf資料庫,再往右下角看到連接字串的部分,將這一串的值全部複製,去貼到connectString=後面,也就是再往下看下一張的圖。

連結資料庫-2

連結資料庫-2

連結資料庫-3

連結資料庫-3

Step 3:建立新的資料表

[法1]

選擇資料表按滑鼠右鍵,選擇加入新的資料表

[法1]建立新的資料表-1

[法1]建立新的資料表-1

它就會跳出下圖的畫面,那麼紅框是可以寫SQL資料庫的部分,綠框是顯示有哪些欄位名稱與資料型態等等相關內容,如果想要直接在綠框直接做修改也可以,寫完後就可以按下橘框的「更新」。

[法1]建立新的資料表-2

[法1]建立新的資料表-2

那麼會跳出會預覽資料庫更新的內容動作,確認後就可以按下「更新資料庫」

[法1]建立新的資料表-3

[法1]建立新的資料表-3

更新完後其實我們的左邊的資料庫看起來是沒有任何變化的,所以「須要重新整理」後就會產生剛剛所更新的內容囉!

[法1]建立新的資料表-4

[法1]建立新的資料表-4

[法2]

選擇資料庫Account.mdf滑鼠右鍵選擇新增查詢,它會多出一個空白視窗,這邊就可以寫SQL語法

[法2]建立新的資料表-1

[法2]建立新的資料表-1

我們就試著寫一個建立Account的資料表的SQL語法

[法2]建立新的資料表-2

[法2]建立新的資料表-2

寫完後就點選「打勾檢查」,沒錯誤就可以點選「三角形執行」,執行完後左邊一樣要重新整理後,就會出現我們所建立的資料了

[法2]建立新的資料表-3

[法2]建立新的資料表-3

那麼無論是[法1]、[法2]的方法我們用「新增查詢」這個方法來測試「新增資料」看有沒有成功,當寫完SQL新增資料的語法後,重新整理資料庫後,選擇剛剛新增的資料表滑鼠右鍵去點選「顯示資料表資料」,可以看到剛剛新增的資料,如下圖所示有正常顯示代表有正常的在運行。

測試新增資料

測試新增資料

Step 4:加入參考

在方案總管下的參考去選擇「加入參考」

加入參考-1

加入參考-1

它就會跳出參考管理員視窗,那麼選擇「組件」,將「System.Configuration」這一個參考名稱打勾後,就可以「確定」了

加入參考-2

加入參考-2

Step 5:建立介面

使用Label和TextBox工具,那麼性別我們使用ComboBox它是下拉式選單,因此選擇它後右上角有個小箭頭,再點一次我們就可以去編輯項目了,也就是跳出右下角的視窗字串集合編輯器,這邊一行代表一個項目,我們就寫兩個。

建立介面-1

建立介面-1

設計密碼這一個部分,填寫它也是使用TextBox工具,不過由於是密碼我們希望隱藏,因此右下角屬性有個PasswordChar,這邊就是設定打密碼時會顯示什麼樣的字元,在這邊我們就輸入「*」打字出來就會顯示 * 了

建立介面-2

建立介面-2

那麼密碼提示問題一樣也是使用ComboBox下拉式選單。

建立介面-3

建立介面-3

當介面設計差不多時,我們要檢查帳號是否有人註冊過,因此除了要有檢查按鈕外,還要有訊息來顯示出檢查後的相關結果,那麼我們就在下方增加一個Label,裡面內容文字就先刪除,如下圖所示:

建立介面-4

建立介面-4

背景部分想要用圖片就可以在右下角屬性部分找到Background這邊去做修改,但是修改完成後,有沒有發現使用Label的文字全部都有背景暗灰色,這下怎麼辦?

建立介面-5

建立介面-5

點選使用Label的文字再去看屬性BackColor部分,去選擇Web的Transparent將背景變成透明色,就像下面這張圖一樣,背景色就會變透明了。

建立介面-6

建立介面-6

最後介面呈現的結果就如下圖所示:

建立介面-7

建立介面-7

Step 6:加入功能與資料庫連動(測試)

(1)建立連線資料庫

(2)取得資料總筆數

(3)新增資料到資料庫的資料表

測試連動資料庫-1

測試連動資料庫-1

實際操作執行一下看結果有沒有存入資料庫裡,如下圖所示:

測試連動資料庫-2

測試連動資料庫-2

由下圖可知,剛剛執行的資料已經輸入到資料庫裡了,代表有連線成功。(第一筆資料是已經有先在資料表去做「新增搜尋」那邊有先測試過可否新增資料,那麼想測試的人也可以先做測試後,再放到VC#程式中去)

測試連動資料庫-3

測試連動資料庫-3

Step 7:加入功能與資料庫連動(完善)

在一開始先宣告全域變數,這邊我們的變數用意是判斷是否檢查後帳號可以確定是可以使用的,最後確定註冊時會用到它。

完善-全域變數宣告

完善-全域變數宣告

這邊是檢查功能的程式:

(1)[紅框]先行判斷帳號是否有空白,有的話就顯示提示訊息不可空白

(2)[橘框]連線資料庫,連線字串要去看App.config,當初我們設定連結資料庫的名字是什麼(也就是name=”IntroSQLAccount”),就將它填入連線字串中

//建立連線字串,並宣告連線
string connstr = ConfigurationManager.ConnectionStrings["IntroSQLAccount"].ToString();
SqlConnection connSql = new SqlConnection(connstr);

//連接資料庫開啟
connSql.Open();
SqlCommand cmd = new SqlCommand(connstr, connSql);

(3)[綠框]使用SQL語法加入程式中做使用,這邊我們要做「搜尋」動作

//SQL搜尋語法:
//"SELECT COUNT('要搜尋的欄位名') FROM 資料表 where AccountNumber LIKE N'" + accountNumber + "'"
//轉成C#可用
cmd.CommandText = "SELECT COUNT('AccountNumber') FROM [dbo].[Table] where AccountNumber LIKE N'" + accountNumber + "'";
int AccountNum = (Int32)cmd.ExecuteScalar(); //判斷是否有相同的帳號,輸出結果是取得相同帳號的數量

(4)[藍框]判斷此帳號是否有人使用過,若>=1的狀況則已經有人使用過。

備註:btnRegister.Enabled = true; //這邊的Enabled代表此按鈕可否有作用(也就是可否做點選動作)。
完善-檢查功能程式

完善-檢查功能程式

這是註冊功能的程式:

(1)[紅框]先判斷帳號是否有做檢查,接著判斷是否有欄位沒有填寫到

(2)[橘框]一樣跟資料庫做連線

(3)[綠框]使用SQL語法加入程式中做使用,做的是「取得總筆數」、「新增」的動作,最後新增完後要去做執行(也就是更新資料庫)。

//取得資料總筆數
cmd.CommandText = "SELECT COUNT(*) FROM [dbo].[Table]";
account_ID = (Int32)cmd.ExecuteScalar();
//account_ID = account_ID + 1; //若第一筆資料為 1 時,就需要 + 1,若 0 則不用。

//SQL INSERT 語法-新增
// INSERT INTO  [table] ([欄位名1],[欄位名2],[欄位名3],....) VALUES (@值1, @值2, @值3,...)
SqlCommand cmd1 = new SqlCommand();
cmd1.CommandType = CommandType.Text;
 
//cmd.CommandText = "INSERT INTO Table (編號,姓名,性別,帳號,密碼,密碼提示問題,密碼提示問題答案) VALUES (4,N'陽文文', N'男',900825,'0912345678')";
cmd1.CommandText = "INSERT INTO [dbo].[Table] (ItemID,Name,Gender,AccountNumber,Password,PasswordHitQuestion,PasswordHitAnswer) VALUES ('" + account_ID + "',N'" + tbxName.Text.Trim() + "', N'" + cbxGender.Text.Trim() + "',N'" + tbxAccountNum.Text.Trim() + "',N'" + tbxPassword.Text.Trim() + "',N'" + cbxPasswordHitQuest.Text.Trim() + "',N'" + tbxPasswordHitAns.Text.Trim() + "')";
cmd1.Connection = connSql;

cmd1.ExecuteNonQuery();//執行

(4)[藍框]註冊完後,那就回歸btnRegister.Enabled = false;,接著看狀況關閉視窗,此處有註冊完後直接做關閉動作

完善-註冊功能程式

完善-註冊功能程式

這邊是取消功能的程式:也就是將視窗直接關閉不做任何事。

完善-取消功能程式

完善-取消功能程式

大致上內建SQL使用狀況是這個樣子,那麼接下來就列一下常用的SQL語法



【SQL常用語法】

1.建立資料表

create table 表格名稱("欄位名稱1"  "欄位名稱1的資料型別", "欄位名稱2"  "欄位名稱2的資料型別", "欄位名稱3"  "欄位名稱3的資料型別",....);

欄位還可以增加一些限制,常用的有以下幾個

NOT NULL、CHECK、UNIQUE、主鍵 (Primary Key)、外來鍵 (Foreign Key)

(1)NOT NULL:不可以空值
(2)CHECK:此欄位中所有資料都符合某個條件
(3)UNIQUE:此欄位中不會有重複的值,可接受空值
(4)主鍵 (Primary Key):此欄位中的值為「唯一值」,不可接受空值。
備註:
Primary Key可包含一個或多個欄位,當有多個欄位下,就稱為組合鍵(Composite Key)

(5)外來鍵 (Foreign Key):一個或多個欄位去指向另一資料表中的主鍵(Primary Key)。目的是確定資料的參考完整性

 

範例:

create table table_Test(ItemID  INT  NOT  NULL, Name  NTEXT, Score  INT  CHECK(SID >0) , IdentityNum  INT  UNIQUE,PRIMARY KEY CLUSTERED ([ItemID] ASC));
SQL語法-建立資料表

SQL語法-建立資料表

2.新增資料

 

insert into 表格名稱 values (內容值1, 內容值2, 內容值3...);

上面這行寫法:內容值在每個欄位中相對應的依序填入,不可少。

insert into 表格名稱 ("欄位名稱1","欄位名稱2","欄位名稱4"...) values (內容值1, 內容值2, 內容值4...);

上面這行寫法:會對應我們所寫的欄位名稱,不一定每個欄位都填。

範例:

insert into table_Test  values ('1' , N'"橙果杏"' , '80' , 'A123456'); 
SQL語法-新增資料

SQL語法-新增資料

3.修改更新資料

update 表格名稱 set 欄位名稱2=內容值2, 欄位名稱3=內容值3, 欄位名稱5=內容值5  ....  where 選定某欄位名稱=某內容值;
【注意!!!】
where一定要加進去喔!後面接的是特定哪幾列要去修改更新的
不然整個資料表的資料全部都會被修改掉!

範例:

update  table_Test  set  IdentityNum = '"B654321' where ItemID="1";
SQL語法-修改更新資料

SQL語法-修改更新資料

4.搜尋資料

SQL語法-搜尋資料參考

SQL語法-搜尋資料參考

(1)查詢欄位

select 欄位名稱1, 欄位名稱2  from 表格名稱;

若要顯示所有欄位的話可使用「*」來帶代表所有欄位名稱。

範例:

select  Name , Score  from  table_Test;
SQL語法-查詢欄位所有資料

SQL語法-查詢欄位所有資料

(2)查詢欄位中指定的內容值

select 欄位名稱1, 欄位名稱2  from 表格名稱 where 欄位=指定的內容值;
where 後面加的是條件

範例:

select  Name , Score  from  table_Test  where  Score="80";
SQL語法-查詢欄位中指定的項目

SQL語法-查詢欄位中指定的項目

select  Name , Score  from  table_Test  where  Score < 80;
SQL語法-查詢欄位中符合條件的項目

SQL語法-查詢欄位中符合條件的項目

(3)搜尋並計算欄位中指定的內容值的數量

select  count('欄位名稱') from 表格名稱 where 欄位名稱 like 內容值;

範例:

select  count('Name')  from   table_Test  where  Name  LIKE 橙果杏;

輸出結果為:1

5.計算總筆數

select  count('欄位名稱') As 新表格名稱 from 表格名稱;

範例:

select  count(*) as 總筆數 from   table_Test;
SQL語法-計算總筆數

SQL語法-計算總筆數

6.刪除資料

delete from 資料表名稱 where 欄位名稱 = 內容值;
【注意!!!】
where一定要加進去喔!不然整的資料全部都會被刪除!!!

範例:

delete from table_Test where Name="維娜蕾";
SQL語法-刪除資料

SQL語法-刪除資料



參考資料:
1.DAY 25 資料庫( SQL ) 建立表格 欄位介紹 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
2.SQL DELETE FROM 刪除資料 - SQL 語法教學 Tutorial (fooish.com)

avatar-img
21會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
橙果杏的沙龍 的其他內容
  在寫程式過程中時常會使用檔案的讀取、建立、寫入與刪除相關使用,因此這篇就來分享圖片檔案、文字檔案、INI的設定檔案的相關使用。
接續上一篇分享跟執行緒相關的內容包含:安全鎖(lock)、號誌(semaphore)、前景與背景執行緒介紹等等。 二、安全鎖(lock)   安全鎖目的是當多個執行緒要執行同一函式時,為了避免同時進行或是影響到變數的值,因此才會有這個機制來保護。「鎖的是區塊」而非資源哦!什麼意思?來看看就
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時
  程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
  本篇要分享的是事件(Event)與委派(Delegate),這兩者時常都會綁再一起,怎麼說呢?我們先來各別了解什麼是Event?什麼是Delegate?他們都在做些什麼事呢? 一、事件(Event)   事件(Event)是事情的發生、狀態的發生或改變,也可以說是對於這件事去「做通知」這個動作。
  在寫程式過程中時常會使用檔案的讀取、建立、寫入與刪除相關使用,因此這篇就來分享圖片檔案、文字檔案、INI的設定檔案的相關使用。
接續上一篇分享跟執行緒相關的內容包含:安全鎖(lock)、號誌(semaphore)、前景與背景執行緒介紹等等。 二、安全鎖(lock)   安全鎖目的是當多個執行緒要執行同一函式時,為了避免同時進行或是影響到變數的值,因此才會有這個機制來保護。「鎖的是區塊」而非資源哦!什麼意思?來看看就
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時
  程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
  本篇要分享的是事件(Event)與委派(Delegate),這兩者時常都會綁再一起,怎麼說呢?我們先來各別了解什麼是Event?什麼是Delegate?他們都在做些什麼事呢? 一、事件(Event)   事件(Event)是事情的發生、狀態的發生或改變,也可以說是對於這件事去「做通知」這個動作。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
大部分人都認為中產家庭生活穩定,擁有房產和汽車,擁有穩定的工作,但是很多人不知道的是,這種穩定是因為所處時代趨勢的順利,不是因為個人能力和努力。大部分中產階級只是順應了時代趨勢,利用自己的勞動力資本獲得了一些財富,但是他們缺乏資本家的認知和資源,也沒有窮人的抱負和毅力,只是擁有了一個不錯的生活環境而
Thumbnail
AUD重點 以下整理各章節一定要記得的地方,僅為個人念書心得,適合已經唸過一次課本或考前複習者快速複習重點、針對考點準備,並非完整的觀念解說。
Thumbnail
越南經濟成長的表現,世界有目共賭,加上城鎮化的效用,為越南當地創造了不斷擴張的中產階級消費群。而如今,中產階級不僅影響了越南的經濟行為,也為當地帶來嶄新的市容。
Thumbnail
抽離那個時期夠久了,終於有足夠的心理素質來談談在升學環境裡面的心理階級感。
Thumbnail
中產階級倡議1:中產階級是個脆弱的階級,現在貧富差距激化,逐漸消失的中產階級們該何去何從?
Thumbnail
我的 Podcast 節目《曉嫚的Cult Bar》全新開張!     每週五更新:我們不論斷權貴、不批評性工作者,你可以與節目一起揭露真實,並中性地從事實裡探索原因。由他者的世界觀反映自我,和曉嫚一起看見更多吧! 「做雞也要做贏你!」階級內的超肉搏鬥爭現場 點此用喜歡的方式收聽最新一集節目:《方
Thumbnail
【《安靜是種超能力》作者張瀞仁故事:我們只能照著社會期待走?看看超級內向者,如何接納自己,開啟人生新篇章?】 本文將從張瀞仁的人物介紹,再到故事闡述,最後則是三大暖心佳句推薦。 下篇文章預告:將於12/04(五)早上7:30發佈
Thumbnail
對於投資理財的理解愈深,其實大多數都體現在你對於時間看法的轉變。
Thumbnail
緩慢不中斷地帶過裸身的靜距離鏡頭,像是親手撫摸過這些被影像呈現出來的肉身細節,暗示觀眾關於全片一再呈現出來的一個重要命題:「觀看不僅僅只能是旁觀,而是能夠透過觀看他人肉身與慾望的展演,尋回對自身肉體與慾望的親密體感。」因此全片的角色鮮少肢體接觸,卻引爆出最赤裸的慾望交流。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
大部分人都認為中產家庭生活穩定,擁有房產和汽車,擁有穩定的工作,但是很多人不知道的是,這種穩定是因為所處時代趨勢的順利,不是因為個人能力和努力。大部分中產階級只是順應了時代趨勢,利用自己的勞動力資本獲得了一些財富,但是他們缺乏資本家的認知和資源,也沒有窮人的抱負和毅力,只是擁有了一個不錯的生活環境而
Thumbnail
AUD重點 以下整理各章節一定要記得的地方,僅為個人念書心得,適合已經唸過一次課本或考前複習者快速複習重點、針對考點準備,並非完整的觀念解說。
Thumbnail
越南經濟成長的表現,世界有目共賭,加上城鎮化的效用,為越南當地創造了不斷擴張的中產階級消費群。而如今,中產階級不僅影響了越南的經濟行為,也為當地帶來嶄新的市容。
Thumbnail
抽離那個時期夠久了,終於有足夠的心理素質來談談在升學環境裡面的心理階級感。
Thumbnail
中產階級倡議1:中產階級是個脆弱的階級,現在貧富差距激化,逐漸消失的中產階級們該何去何從?
Thumbnail
我的 Podcast 節目《曉嫚的Cult Bar》全新開張!     每週五更新:我們不論斷權貴、不批評性工作者,你可以與節目一起揭露真實,並中性地從事實裡探索原因。由他者的世界觀反映自我,和曉嫚一起看見更多吧! 「做雞也要做贏你!」階級內的超肉搏鬥爭現場 點此用喜歡的方式收聽最新一集節目:《方
Thumbnail
【《安靜是種超能力》作者張瀞仁故事:我們只能照著社會期待走?看看超級內向者,如何接納自己,開啟人生新篇章?】 本文將從張瀞仁的人物介紹,再到故事闡述,最後則是三大暖心佳句推薦。 下篇文章預告:將於12/04(五)早上7:30發佈
Thumbnail
對於投資理財的理解愈深,其實大多數都體現在你對於時間看法的轉變。
Thumbnail
緩慢不中斷地帶過裸身的靜距離鏡頭,像是親手撫摸過這些被影像呈現出來的肉身細節,暗示觀眾關於全片一再呈現出來的一個重要命題:「觀看不僅僅只能是旁觀,而是能夠透過觀看他人肉身與慾望的展演,尋回對自身肉體與慾望的親密體感。」因此全片的角色鮮少肢體接觸,卻引爆出最赤裸的慾望交流。