【中階級】-內建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 追蹤
SQL(Structured Query Language,結構化查詢語言)是與資料庫互動的基礎語言,廣泛應用於各種資料庫管理系統,如 MySQL、PostgreSQL 和 SQL Server。在本篇文章中,將介紹 SQL 的基本語法,並通過多個實際練習案例,學習掌握從資料表創建到高階查詢的技能。
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
本文將介紹在Windows環境中安裝SQL Server及相關PHP擴展,以進行與SQL Server的串接。透過本文所述步驟,您將能在Windows環境中順利進行PHP與SQL Server串接設定。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
Thumbnail
在這個星光閃爍的數據宇宙中,SQL是一把鑰匙,開啟了通往知識寶庫的大門。想像一下,每一條SELECT語句都像是一段魔法咒語,喚醒沉睡在數據庫深處的信息。今天,我們就要一起踏上這段探秘之旅,將揭開SQL基本查詢指令的神秘面紗,學習如何巧妙地與數據對話。
Thumbnail
本文將介紹 SQL 中的連接(JOIN),連接(JOIN)是用於結合來自兩個或多個資料表的相關數據,建議讀過我之前發佈的幾篇"SQL學習筆記"之後再來看這篇。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
SQL(Structured Query Language,結構化查詢語言)是與資料庫互動的基礎語言,廣泛應用於各種資料庫管理系統,如 MySQL、PostgreSQL 和 SQL Server。在本篇文章中,將介紹 SQL 的基本語法,並通過多個實際練習案例,學習掌握從資料表創建到高階查詢的技能。
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
本文將介紹在Windows環境中安裝SQL Server及相關PHP擴展,以進行與SQL Server的串接。透過本文所述步驟,您將能在Windows環境中順利進行PHP與SQL Server串接設定。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
Thumbnail
在這個星光閃爍的數據宇宙中,SQL是一把鑰匙,開啟了通往知識寶庫的大門。想像一下,每一條SELECT語句都像是一段魔法咒語,喚醒沉睡在數據庫深處的信息。今天,我們就要一起踏上這段探秘之旅,將揭開SQL基本查詢指令的神秘面紗,學習如何巧妙地與數據對話。
Thumbnail
本文將介紹 SQL 中的連接(JOIN),連接(JOIN)是用於結合來自兩個或多個資料表的相關數據,建議讀過我之前發佈的幾篇"SQL學習筆記"之後再來看這篇。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為