目录
0 环境参数
- 集成开发环境:Microsoft Visual Studio Professional 2019, version 16.7.5
- .NET 环境:Microsoft .NET Framework, version 4.8.03752
- 数据库产品:Microsoft SQL Server 2016 LocalDB
- 数据库连接工具:Navicat Premium Premium, versin 12.0.18 (64-bit) 1999-2017
数据库 | 说明 | 角色 |
---|---|---|
Microsoft SQL Server | 微软的数据库服务,收费 | 作为服务运行 |
Microsoft SQL Server Express | Microsoft SQL Server 的缩减版, 功能和性能做了限制,免费 | 作为服务运行 |
Microsoft SQL Server LocalDB | Microsoft SQL Server Express 版本的轻量级版, 取消了多用户管理和远程连接管理功能,免费 | 在“用户模式”下与应用程序一起运行 |
SQL Server LocalDB 是一种面向开发人员的 SQL Server Express 功能,向开发人员提供 SQL Server 数据库引擎 ,使其不必管理 Transact-SQL 的完整服务器实例即可撰写和测试 SQL Server 代码。最常用于开发人员开发和测试过程中,在开发人员的电脑中不必安装庞大的 Microsoft SQL Server。
安装 Visual Studio 2012 以及更高的版本时,可以配置同时安装相应版本的 LocalDB。
注:Visual Studio 2017 和 Visual Studio 2019 内置的均是 SQL Server 2016 Express LocalDB。
SQL Server Local DB Instance
一般而言,有两个 Local DB Instance, 主要位于以下目录(Snow-Angel是我的计算机名):
C:\Users\Snow-Angel\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\
数据库实例 | 连接字符串和数据库位置 | |
---|---|---|
MSSQLLocalDB | 连接字符串 | Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False |
数据库位置 | C:\Users\Snow-Angel\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB | |
ProjectsV13 | 连接字符串 | Data Source=(localdb)\ProjectsV13;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False |
数据库位置 | C:\Users\Snow-Angel\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\ProjectsV13 | |
C:\Users\Snow-Angel\AppData\Local\Microsoft\VisualStudio\SSDT |
1 SQL Server 对象资源管理器
主要目的:打开 SQL Server 对象资源管理器,创建数据库、数据表,添加数据。
1.1 视图 菜单 -> SQL Server 对象资源管理器
1.2 右击 SQL Server -> 添加 SQL Server …
1.3 浏览 选项卡 -> 展开 本地 列表 -> 选中数据库实例,下方会自动填充配置信息 -> 连接。
本文以 MSSQLLocalDB 为例。
1.4 在 SQL Server 对象资源管理器:右击 数据库 -> 添加新数据库 -> 数据库名称,这里以 dbo.hello 为例
1.5 在 SQL Server 对象资源管理器:右击 新建的数据库 dbo.hello 下的 表 -> 添加新表… -> 添加字段 -> 更新
示例:数据表名为 dbo.Book,有三个字段:ID, Name, Price。建表语句如下:
CREATE TABLE [dbo].[Book] (
[ID] INT NOT NULL,
[Name] NVARCHAR (200) NULL,
[Price] FLOAT (53) NULL,
PRIMARY KEY CLUSTERED ([ID] ASC)
);
当出现如下弹框时,点 更新数据库 即可。
1.6 在 SQL Server 对象资源管理器:右击 新建的表 dbo.Book -> 查看数据 -> 添加数据
这里,添加三行数据,也可以使用 SQL 语句插入数据:
INSERT INTO [dbo].[Book] ([ID], [Name], [Price]) VALUES (1, N'C# Language', 21.3)
INSERT INTO [dbo].[Book] ([ID], [Name], [Price]) VALUES (2, N'C++ Language', 99)
INSERT INTO [dbo].[Book] ([ID], [Name], [Price]) VALUES (3, N'Java Language', 33.3)
2 SqlLocalDB.exe 命令
主要目的:查看连接的数据库实例。
2.1 设置环境变量 SqlLocalDB.exe
SqlLocalDB.exe 一般位于如下目录:
C:\Program Files\Microsoft SQL Server\130\Tools\Binn
2.2 命令行测试 sqllocaldb,查看数据库实例和信息
1 | C:\Users\Snow-Angel>sqllocaldb Microsoft (R) SQL Server Express LocalDB 命令行工具 版本 13.0.1601.5 版权所有(C) Microsoft Corporation。保留所有权利。 用法: SqlLocalDB 操作 [parameters...] 操作: -? 打印此信息 create|c ["instance name" [version-number] [-s]] 使用指定的名称和版本创建新的 LocalDB 实例 如果忽略 [version-number] 参数,则它默认为 系统中安装的最新 LocalDB 版本。 -s 创建后启动新的 LocalDB 实例 delete|d ["instance name"] 删除具有指定名称的 LocalDB 实例 start|s ["instance name"] 启动具有指定名称的 LocalDB 实例 stop|p ["instance name" [-i|-k]] 当前查询完成后,停止具有指定 名称的 LocalDB 实例 -i 使用 NOWAIT 选项请求关闭 LocalDB 实例 -k 在不与之联系的情况下终止 LocalDB 实例进程 share|h ["owner SID or account"] "专用名称" "共享名称" 使用指定的共享名称共享指定的专用实例。 如果省略了用户 SID 或帐户名称,它将默认为当前用户。 unshare|u ["shared name"] 停止共享指定的共享 LocalDB 实例。 info|i 列出当前用户所拥有的所有现有 LocalDB 实例以及所有共享的 LocalDB 实例。 info|i "实例名称" 打印有关指定的 LocalDB 实例的信息。 versions|v 列出在计算机上安装的所有 LocalDB 版本。 trace|t on|off 打开或关闭跟踪 SqlLocalDB 将空格作为分隔符处理。需要用引号将 包含空格和特殊字符的实例名称引起来。 例如: SqlLocalDB create "My LocalDB Instance" 如上所述,有时可以省略实例名称,或者 将其指定为 ""。在这种情况下,引用的是默认的 LocalDB 实例 "MSSQLLocalDB"。 |
2 | C:\Users\Snow-Angel>sqllocaldb info MSSQLLocalDB ProjectsV13 |
3 | C:\Users\Snow-Angel>sqllocaldb info MSSQLLocalDB 名称: MSSQLLocalDB 版本: 13.1.4001.0 共享名称: 所有者: SNOW-ANGEL\Snow-Angel 自动创建: 是 状态: 正在运行 上次启动时间: 2022-1-1 20:00:19 实例管道名称: np:\\.\pipe\LOCALDB#3D47E0EA\tsql\query |
3 Navicat 连接 SQL Server
主要目的:使用 Navicat 连接 SQL Server(这步也可跳过)。
使用此数据源:DataSource=(localdb)\MSSQLLocalDB
3.1 新建 SQL Server 连接:
文件 菜单 -> 新建连接 -> SQL Server...
连接名:自定义,这里为 MSSQLLocalDB
主机:使用实例管道名称,这里为 np:\\.\pipe\LOCALDB#3D47E0EA\tsql\query
验证:使用Windows验证
3.2 双击连接实例,可能会提示安装 Microsoft SQL Server Native Client,点击 是 即可。
在 Client Components & SQL Server Native Client SDK 下拉列表中,均选择 Will be installed on local hard drive.
3.3 展开表,双击 Book 表,查看数据。
对于浮点数据,存储或显示可能会存在精度误差。
4 Visual Studio 连接 SQL Server
主要目的:使用 Visual Studio 连接 SQL Server。
4.1 打开 视图 菜单 -> 服务器资源管理器
4.2 在 服务器资源管理器:右击 数据连接 -> 添加连接…
4.3 在 添加连接 对话框:
服务器名:输入 (localdb)\MSSQLLocalDB
选择或输入数据库名称:dbo.hello
点击 测试连接 -> 没有问题则弹出对话框提示:测试连接成功。随后,点击 确定 即可。
连接成功会出现数据连接信息。默认格式推断:<用户名>\localdb#<id>.<数据库名>.dbo
示例:这里为 snow-angel\localdb#3d47e0ea.dbo.hello.dbo
5 Visual Studio 实体数据模型
主要目的:使用 Visual Studio 实体数据模型 操作数据
EF = Entity Framework 实体框架
5.1 项目 右键 -> 添加 -> 新建项…
5.2 在 添加新项 对话框:定位到 Visual C# 项 | 数据 -> 选中 ADO.NET 实体数据模型 -> 这里名称填为 Model -> 点击 添加
5.3 在 实体数据模型向导:选择 来自数据库的EF设计器 -> 点击 下一步
5.4 在 实体数据模型向导:自动会出现 数据库连接、连接设置 等信息 -> 可以直接点击 下一步
5.5 在 实体数据模型向导:勾选 表 dbo Book -> 模型命名空间 可以使用默认提供的,也可自定义 -> 确认无误,点击 完成
当弹出 安全警告 对话框时,点击 确定,或 勾选上 不再显示此消息 并 点击 确定。
5.6 生成模型与文件结构
5.7 数据使用 LINQ
LINQ = .NET Language Integrated Query
using System;
using System.Collections.Generic;
using System.Linq;
namespace SQLServerLocalDB {
class Program {
static void Main(string[] args) {
var dbContext = new Entities();
int count = dbContext.Book.Count();
Console.WriteLine(count);
List<Book> list = dbContext.Book
.Where(book => book.Name.Contains("C#")).ToList();
foreach (var item in list) {
Console.WriteLine($"{item.ID}, {item.Name}, {item.Price}");
}
}
}
}
输出结果:
3
1, C# Language, 21.3