SqlLocalDb是啥?其实就是简化SQL Server的本地数据库,可以这样子说,SQL Server既可以作为远程,也可以做本地,
而SqlLocalDb只能作为本地使用,不支持联网,只能本机连接。说的直接一点,SqlLocalDb就是一个轻量级的基于本地的T-SQL数据库,全称:SQL Server Express LocalDb。
轻量级数据库对比(LocalDB vs. SQL Express vs. Compact)
LocalDB并不能完全替代SQL Server Express,它只是对开发人员提供了另外一种选择,并保证与SQL Server Express一致的兼容性。
LocalDB与SQL Server Compact之间有很大区别:
运行模式:SQL Server Compact是一个进程内(in-proc)DLL,LocalDB则作为独立进程运行。
磁盘占用:SQL Server Compact的体积仅有4MB,LocalDB安装之后则有250MB。
功能特性:SQL Server Compact仅提供RDBMS的核心功能,而LocalDB则提供更丰富的功能,比如存储过程、几何和地理数据类型。
一、安装这个SqlLocalDb
MSSQLLocalDB 微软本地数据库,Visual Studio 安装时会自动装上。
Visual Studio 2019 内置的也是SQL Server 2016 Express LocalDB。
1、通过VS Installer安装:
如果选了.NET负载,直接在里面勾上就行;如果没有,选到单个组件,勾上localdb,会自动勾上下一项那个依赖。
2、通过SQL Server Express安装
最新单独下载安装:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads
下载SQL Server Express:
下载之后,打开该引用,并点击“下载介质”:
在弹出的页面中,选择LocalDB(第三个),点击下一步下载SqlLocalDB.msi
注:SQL Server 2016 Express LocalDB微软已经不再提供,目前为最新的,也就是以上的2019版本。
下载后安装
安装后:
二、连接SqlLocalDB
使用 Windows 身份验证,服务器类型:数据库引挈。
LocalDB的实例归类设置为SQL_Latin1_General_CP1_CI_AS
,不能更改,导致的最直接的结果就是直接新建数据库会存不了中文。
解决办法是对于每一个数据库手动指定排序规则:
create/alter database DBName COLLATE Chinese_PRC_CI_AS
1、SSMS可以连接此实例。
连接SqlLocalDB2012 :实例名: (LocalDb)v11.0
连接SqlLocalDB2012 :实例名: (LocalDb)MSSQLLocalDB
2、VS连接到SQLLoalDB
1、打开Visual Studio 2019,依次点击“视图”(菜单栏)->“服务器资源管理器”,将会打开“服务器资源管理器”窗口:
2、右键点击“数据连接”,在弹出的上下文菜单中选择“添加连接”,在弹出的窗口中将“服务器名”设置为(LocalDb)MSSQLLocalDB,如下图所示:
然后附加一个名称为MusicDBContext.mdf的数据库文件(文件可以自己定义)并点击确定,此时,MusicDBContext.数据库作为默认的数据库,我们可以选择SQLLocalDB中的其他已有数据库。
生成的连接字符串如下:
Data Source=(LocalDb)MSSQLLocalDB;AttachDbFilename=C:UsersCNCDesktopMusicDBContext.mdf;Initial Catalog=MusicDBContext;Integrated Security=True
我们可以将mdf文件的路径改为相对路径:
Data Source=(LocalDb)MSSQLLocalDB;AttachDbFilename=|DataDirectory|MusicDBContext.mdf;Initial Catalog=MusicDBContext;Integrated Security=True
3、编写程序对已有数据的读取
如下代码所示:
using System; using System.Data; using System.Data.SqlClient; using System.Linq; namespace ConsoleApp { class Program { static void Main(string[] args) { string connectionString = @"Data Source=(LocalDb)MSSQLLocalDB;Initial Catalog=MusicDBContext;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Musics",connection); DataTable table = new DataTable(); adapter.Fill(table); var result = (from row in table.Rows.Cast<DataRow>() select new { ID = (int)row[0], Title = (string)row[1], ReleaseDate = (DateTime)row[2] }); result.ToList().ForEach(x => Console.WriteLine($"{x.ID},{x.Title},{x.ReleaseDate}")); } } }
运行结果如下:
注:MusicDBContext.mdf可以在百度网盘下载,地址:https://pan.baidu.com/s/1zgkPLcetTo-XMNEH3-8FoQ
4、一些关于SqlLocalDB的参考资料
https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/sql-server-2016-express-localdb?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/2014/relational-databases/express-localdb-instance-apis/command-line-management-tool-sqllocaldb-exe?view=sql-server-2017
https://docs.microsoft.com/zh-cn/sql/2014/tools/sqllocaldb-utility?view=sql-server-2017
https://technet.microsoft.com/zh-cn/hh510202(v=sql.105)