VS2013自帶的資料庫SQL Server Express LocalDB使用介紹
原作者:http://www.icharm.me/vs2013%E8%87%AA%E5%B8%A6%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93sql-server-express-localdb%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D.html
哀差悶這幾天在做實踐周的專案,一個餐館點餐系統,需要使用到資料庫,遇到了很多的問題,百度了很久也沒什麼頭緒。主要還是關於VS自帶的資料庫操作的問題。這裡我來總結一下吧。
首先需要說明的是哀差悶在裝VS2013的時候是全選了所有元件安裝的。所以預設會自動安裝一個SQL Server Express LocalDB。
SQL Server Express LocalDB簡介
首先來說一下這個SQL Server Express LocalDB吧,大家應該都知道Express版是一個精簡版,而LocalDB呢是SQL Server Express的一種執行模式,比較適合在開發環境使用。所以被內建在VS2013中。
在下文中我們使用SSEL來代替SQL Server Express LocalDB。
在VS中使用SSEL
1.使用SSEL新建一個數據庫
檢視——開啟SQL Server物件資源管理器
2.展開其中一個數據庫例項——右鍵點選資料庫,選擇新增新資料庫
3.給新建的Test資料庫新增一個Users表
4.給新建的Users表新增內容
右鍵新建的表名,點選檢視資料:
新建資料庫例項
可以看到哀差悶是在已有的資料庫例項上新建資料庫的,那麼怎樣建立一個新的例項呢,哀差悶沒有在VS中找到方法,所以下面會介紹SSEL的命令列工具SqlLocalDB.exe
這個工具預設在 C:\Program Files\Microsoft SQL Server\110\Tools\Binn(哀差悶是64為系統,如果是32位的話應該是在C:\Program Files(x86)下)。SqlLocalDB.exe不能直接執行,需要使用cmd開啟。
下面是cmd命令:
1 |
C:\Users\Myl-Cloud> cd
C:\Program Files\Microsoft SQL Server\110\Tools\Binn |
2 |
3 |
C:\Program Files\Microsoft SQL Server\110\Tools\Binn>SqlLocalDB.exe |
下面是SqlLocalDB.exe執行後的提示資訊。
1 |
Microsoft (R) SQL Server Express LocalDB 命令列工具 |
2 |
版本 11.0.2100.60 |
3 |
版權所有 (c) Microsoft Corporation。保留所有權利。 |
4 |
5 |
用法: SqlLocalDB 操作 [引數...] |
6 |
7 |
操作: |
8 |
9 |
-? |
10 |
列印此資訊 |
11 |
12 |
create|c
"例項名稱" [版本號] [-s] |
13 |
使用指定的名稱和版本建立新的 LocalDB 例項 |
14 |
如果忽略 [版本號] 引數,它預設為 |
15 |
SqlLocalDB 產品版本。 |
16 |
-s 建立後啟動新的 LocalDB 例項 |
17 |
18 |
delete|d
"例項名稱" |
19 |
刪除具有指定名稱的 LocalDB 例項 |
20 |
21 |
start|s
"例項名稱" |
22 |
啟動具有指定名稱的 LocalDB 例項 |
23 |
24 |
stop|p
"例項名稱" [-i|-k] |
25 |
當前查詢完成後,停止具有指定 |
26 |
名稱的 LocalDB 例項 |
27 |
-i 使用 NOWAIT 選項請求關閉 LocalDB 例項 |
28 |
-k 在不與之聯絡的情況下終止 LocalDB 例項程序 |
29 |
30 |
share|h [ "所有者 SID 或帳戶" ]
"專用名稱" "共享名稱" |
31 |
使用指定的共享名稱共享指定的專用例項。 |
32 |
如果省略了使用者 SID 或帳戶名稱,它將預設為當前使用者。 |
33 |
34 |
unshare|u
"共享名稱" |
35 |
停止共享指定的共享 LocalDB 例項。 |
36 |
37 |
info|i |
38 |
列出當前使用者所擁有的所有現有 LocalDB 例項 |
39 |
以及所有共享的 LocalDB 例項。 |
40 |
41 |
info|i
"例項名稱" |
42 |
列印有關指定的 LocalDB 例項的資訊。 |
43 |
44 |
versions| v |
45 |
列出在計算機上安裝的所有 LocalDB 版本。 |
46 |
47 |
trace|t on|off |
48 |
開啟或關閉跟蹤 |
可以看到操作命令必須以 SqlLocalDB 開頭。
下面演示新建資料庫例項的命令
1 |
SqlLocalDB create newshili |
2 |
3 |
C:\Program Files\Microsoft SQL Server\110\Tools\Binn>SqlLocalDB create newshili |
4 |
已使用版本 11.0 建立 LocalDB 例項“newshili”。 |
其他命令類似,這裡不多介紹了。
之前哀差悶一直不會用VS自帶的這個LocalDB資料庫,所以自己也下載了SQL Server Management Studio 2014進行安裝,但是安裝完成開啟SQL Server Management Studio後,提示連線,在伺服器名稱——瀏覽更多,並沒有在本地找到任何SQl服務。網上搜也沒明白個所以然,我估計是因為VS在本機已經裝了個LocalDB的資料庫服務的原因,具體的也不清楚,微軟的東西太龐大。出現在網上搜不到的問題也不奇怪。
那我這個Management Studio豈不是白裝了?其實不然,我們可以用它來管理我們的LocalDB的資料庫例項!!
上面的命令列工具裡,使用檢視例項詳細資訊的命令SqlLocalDB info ProjectsV12
把最下面的一行例項管道名稱; 複製貼上到SQL Server Management Studio的連線對話方塊的伺服器名稱中:
點選連線即可管理ProjectsV12例項了。
連線資料庫:
連線資料庫很簡單吧,使用Ado.Net就行了,之前哀差悶一直想在WinApp裡面連線SQL Server,事實證明這是不能實現的。所以不多說了,
想要連線這個LocalDB,先引入System.Data.SqlClient;名稱空間(若提示找不到,那可能是你沒有裝ADO.NET Framework),廢話不多說了,直接看程式碼,下面程式碼的實現的是將查詢到的資料打印出來的功能
1 |
using System; |
2 |
using System.Collections.Generic; |
3 |
using System.Linq; |
4 |
using System.Text; |
5 |
using System.Threading.Tasks; |
6 |
using System.Data.SqlClient; |
7 |
8 |
namespace LocalDBConnectTest |
9 |
{ |
10 |
class
Program |
11 |
{ |
12 |
static
void Main( string [] args) |
13 |
{ |
14 |
//資料庫連線字串,注意這個寫法(localdb)後面必須是兩個斜槓,因為這中間有個轉義的過程 |
15 |
//Initial Catalog=要連線的資料庫名 |
16 |
//Intergrated Security=true 開啟windows身份驗證 |
17 |
string
ConnectString = "Server=(localdb)\\ProjectsV12;Initial Catalog=mrestaurant;Integrated Security=true" ;
|
18 |
SqlConnection con =
null ; |
19 |
SqlCommand cmd =
null ; |
20 |
SqlDataReader str =
null ; |
21 |
try
{ |
22 |
con =
new SqlConnection(ConnectString);
//連線到資料庫 |
23 |
cmd = con.CreateCommand(); |
24 |
cmd.CommandText =
"select footName from dbo.footinfo" ;
//T-SQL語句 |
25 |
con.Open();
//建立連線後需要用Open開啟連線,結束後要關閉連線,及時釋放資源 |
26 |
str = cmd.ExecuteReader();
|
27 |
while (str.Read()){ |
28 |
Console.WriteLine(str[0]); |
29 |
} |
30 |
} |
31 |
catch (Exception ms) |
32 |
{ |
33 |
Console.WriteLine(ms.Message); |
34 |
} |
35 |
finally |
36 |
{ |
37 |
str.Close(); |
38 |
cmd.Clone(); |
39 |
con.Close(); |
40 |
} |
41 |
42 |
} |
43 |
} |
44 |
} |