ADO.net 连接字符串中的 |DataDirectory| 是什么

|DataDirectory| does not come from config settings; you‘re mixing up three different things:

ConfigurationManager.AppSettings["DataDirectory"]

This comes from config settings; a .config file you have to create and put into your project. This particular setting is the value of the element with key "DataDirectory" in the AppSettings element. This doesn‘t exist unless you put one in the .config file. Typically this is where you put configuration or startup data that is never changed. You should not put file paths here, as they can be different on the machine users install your database to.

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

This is the path to the current user‘s roaming application data folder defined by the operating system your app was installed on. You cannot change this, it is defined by the OS. You can be sure this folder is writable by the user, and will be available if the user roams, or logs on from another machine. This is typically where you want to put editable user data.

SqlConnection("Data Source=|DataDirectory|\\DatabaseFileName.sdf;...")

This is a connection string for an ADO.NET connection. ADO.NET treats vertical bars specially, it looks for an AppDomain data matching the key name between the vertical bars. You can get the same data with:

AppDomain.CurrentDomain.GetData("DataDirectory")

So what writes the value of DataDirectory? It‘s done by whatever deploys your executable:

  • .MSI installers define it as the app‘s target folder.
  • ClickOnce defines a special data folder in your project.
  • Web apps use the App_Data folder.
  • The Visual Studio debugger uses the debug folder.

Note that .MSI installers can allow the user to change the DataDirectory; this is why you should never hard-code or change DataDirectory, if you do that there is no way to find where your application data was deployed. You typically use the DataDirectory folder for read-only binary data deployed with your executable.

If you need to write to the data deployed with your executable you should first copy it someplace you know the user will be able to write to, such as to Environment.SpecialFolder.ApplicationData, and write to the copy. Not only is DataDirectory not necessarily writable by users, it is part of the deployment and not part of the user data; if you repair or uninstall your executable then DataDirectory gets reinstalled or deleted. Users don‘t like it when you delete their data, so don‘t save it to DataDirectory.

 

查看:

https://stackoverflow.com/questions/12266924/how-do-i-read-the-current-path-of-datadirectory-from-config-settings

时间: 2024-10-11 03:18:55

ADO.net 连接字符串中的 |DataDirectory| 是什么的相关文章

连接字符串中Min Pool Size的理解是错误,超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

Min Pool Size的理解是错误的 假设我们在一个ASP.NET应用程序的连接字符串中将Min Pool Size设置为30: <add name="cnblogs" connectionString="Data Source=.;Initial Catalog=cnblogs;Min Pool Size=30" providerName="System.Data.SqlClient"/> 访问一下应用程序,然后用Windows

ADO.NET连接字符串大全

各种数据库的连接字符串 各种数据库的连接字符串 ADO.NET连接字符串大全 ADO.NET连接字符串 名称 ADO.NET连接字符串 说明 ADO.NET连接字符串:SQL Server,SQL Server 2005,ACCESS,Oracle,MySQL,Interbase,IBM DB2,Sybase,Informix,Ingres,Mimer SQL,Lightbase,PostgreSQL,Paradox,DNS,Firebird,Excel ,Text,DBF / FoxPro,A

.Net Webconfig连接字符串中数据库实例名带&#39;\&#39;的问题

获取前: 获取后: 导致sa登录失败的问题 string strCon = "workstation id=localhost;packet size=4096;user id=" + user + ";data source=" + dbserver + ";persist security info=True;password="; //判断数据库实例名中是否包含字符串'\',如果包含'\'的话,替换'\\'为'\' if (strCon.C

WPF连接字符串中易错点

一.WPF中连接字符串需向项目中添加“应用程序配置文件”,然后可以使用比较常用的connectionStrings或者appSettings节点进行配置,如果想详细学习节点设置,可以看看园中其他大神的文章,他们有对此进行细致的讲解,本人在此就不再赘诉了. 二.在窗体中新建button控件,双击进行click事件,编写读取配置文件中相应节点的字符串信息 (这里可能需要引入System.Configuration引用) 三.一切准备就绪,生成也没有问题,运行,额~怎么就报错了??调试,发现connS

ADO.NET学习笔记之连接字符串

ADO.NET 2.0学习笔记之连接字符串 刚刚入门不久,想什么学习下dot net平台,就先从数据访问入手吧,从今天开始认真学习ado.net 2.0,为将来发展做好坚实基础. 连接字符串 SQL Client .net数据提供程序在连接到数据库时极其灵活,它提供了多种用以生成连接字符串的方式.可以使用关键字,例如“Data Sourse”.“Initial Catalog”,也可以使用"Server".“Database”等旧术语. 下面是两个例子,用于连接到SqlServer数据

ADO.NET 连接方式进行数据访问

1. 连接环境简介 1.1. 连接环境的特点 ? 连接环境是指用户在这种环境下始终保持与数据源的连接 ? 优点 –环境易于实施安全控制 – 同步问题易于控制 ? 数据实时性优于其他环境 ? 缺点 – 必须保持持续的网络连接 – 扩展性差 1.2. 连接环境下的对象模型 ? XxxConnection – 建立与数据源的连接,如SqlConnection 用于建立与Microsoft SQLServer? 的连接,OleDbConnection用于建立与任何支持OLEDB 的数据源的连接 ? Xx

处理连接字符串的安全性

1. 数据库安全性 1.1.  尽量使用 Windows 身份验证而不是 SQL Server 验证 – 安全容易管理 –不需要在连接字符串中设置用户名和密码 – 可以通过密码策略保证安全 – 密码不会通过明文在网络中传递 1.2. 集成 Windows 身份验证 提供程序 语法 SqlClient Integrated Security=true; -- or -- Integrated Security=SSPI; OleDb    Integrated Security=SSPI; Odb

C++ ADO方式连接mysql数据库

对于软件开发其实说白了就是在不停地和数据打交道, 所以数据库的操作是必不可少的, 接下来介绍VC开发中利用ADO建立ODBC数据源来访问MySQL数据库. 从我接触的数据库编程方式来说, 我觉得在vc开发连接数据库是比较难的, 也是很容易出错. 在android中, 系统自带sqlite数据库,只需要使用SQLiteOpenHelper抽象类即可完成与数据库的操作. 在java中, 使用jdbc连接mysql数据库, 下载相应jar调用相应接口,传入数据库类型与用户名密码进行数据库的操作. 但是

【重读MSDN之ADO.NET】ADO.NET连接

连接到ADO.NET中的数据源 在 ADO.NET 中,通过在连接字符串中提供必要的身份验证信息,使用 Connection 对象连接到特定的数据源.使用的 Connection 对象取决于数据源的类型.随 .NET Framework 提供的每个 .NET Framework 数据提供程序都具有一个 DbConnection 对象,适用于 SQL Server的.NET Framework 数据提供程序包括一个 SqlConnection 对象. 建立连接 要连接到 Microsoft SQL