无论何时使用EF代码创建应用程序,您都可以看到添加了以下web.config键:
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
您可以很容易地看到它不包含特定于应用程序的信息.更改这些值不会影响应用程序的运行方式,因此我认为它必定是某种不必要的EF工件,可能是设计人员需要的.但是,如果完全删除此键,应用程序将在启动时抛出ConfigurationError.这把钥匙的真正目的是什么?
我是asp.net会员新手,我需要帮助以编程方式更改其连接字符串.
我到现在为止尝试的是
我已经创建了一个类项目名称Sample作为名称空间**并扩展了 System.Web.Security.SqlMembershipProvider
代码为
namespace Sample
{
public class Connectionstring : SqlMembershipProvider
{
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
string connectionString = "server=xx.xx.xx;database=db;user id=un;password=pwd";
// Set private property of Membership provider.
FieldInfo connectionStringField = GetType().BaseType
.GetField("_sqlConnectionString", BindingFlags.Instance |
BindingFlags.NonPublic);
connectionStringField.SetValue(this, connectionString);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并将成员标记中的Web配置文件更改为
<membership defaultProvider="SQLMembershipProvider">
<providers>
<add name="SQLMembershipProvider" type="sample.Connectionstring,sample" connectionStringName="SQLMembershipConnString" applicationName="@@@@@@@" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
并且在运行Web应用程序项目时,我正在更改的连接字符串不会被更改?
等待您的宝贵回复和评论
在Excel 2010中,在Data-Connections下,工作簿中存在所有连接的列表,其中有一个字段"Last Refreshed".这个字段对我来说总是空的.微软称(http://office.microsoft.com/en-001/excel-help/create-edit-and-manage-connections-to-external-data-HA010342379.aspx)"如果空白,那么连接从未已被刷新",但这显然不是这里的情况,因为我们经常刷新日期.
有什么想法吗?谢谢彼得
我的目标是在控制台应用程序中Where对ConfigurationManager.ConnectionStrings集合使用LINQ 查询(假设添加了System.Configuration引用的新的.NET 4.5控制台应用程序,以及相应的using声明).
我开始用这个,这并没有工作:
var relevantSettings =
ConfigurationManager.ConnectionStrings.Where(s => s.Name.StartsWith("Xyz"));
Run Code Online (Sandbox Code Playgroud)
它告诉我:
方法'
IEnumerable<TSource> System.Linq.Enumerable.Where<TSource(this IEnumerable<TSource>, Func<TSource,bool>)' 的类型参数不能从用法中推断出来.尝试明确指定参数.
这抓住了我措手不及,所以我想这个要检查我的理智,但是这并没有工作之一:
foreach (var settingsin ConfigurationManager.ConnectionStrings)
{
if (settings.Name.StartsWith("Xyz")) Console.WriteLine("Found one!");
}
Run Code Online (Sandbox Code Playgroud)
它抱怨没有有关foreach声明,但对.Name位,出现错误:
无法解析符号'名称'
据我所知,有可能是一些防止编译器推断var的类型,仔细检查,我想这其中做的工作:
foreach (ConnectionStringSettings settings in ConfigurationManager.ConnectionStrings)
{
if (connectionString.Name.StartsWith("Xyz")) Console.WriteLine("Found one!");
}
Run Code Online (Sandbox Code Playgroud)
然而,除了解决我的直接问题外,这对我没什么帮助.我想了解这里发生了什么.
我想要做的就是使用一个简单的LINQ Where语句来获取app.config中连接字符串的子集.为什么编译器阻止我这样做?
我通过web api公开我的存储库操作.存储库已使用实体框架和工作单元模式实现.我有很多相同数据库的实例.每个代表不同客户的数据.现在的问题是如何通过每个webapi调用动态设置连接字符串?我应该每次调用都获得连接字符串参数吗?或者我应该为每个客户端托管网络Api?
当我打开SQL命令行时,我写CONNECT username/password@[//]host[:port][/service_name],它将我连接到数据库就好了.但是,我无法使用连接字符串从.NET项目连接.我尝试了许多诸如<add name="ConnectionString" connectionString="Data Source=username/password@[//]host[:port][/service_name];" />和之类的东西<add name="ConnectionString" connectionString="server=tcp:host;Initial Catalog=service_name; user id=username; password=password; Connection Timeout=180;" providerName="System.Data.OracleClient" />,但迄今为止没有任何工作.每当我进入sconn.Open();以下内容时:
var CurrentConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection sconn = new SqlConnection(CurrentConnectionString);
sconn.Open();
Run Code Online (Sandbox Code Playgroud)
我几乎总是得到以下错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:25 - 连接字符串无效)
如何正确连接到数据库?
添加allowMultiQueries=true到 JDBC 字符串使 MySQL 接受具有多个查询的语句。
但这究竟有什么作用呢?这有什么好处吗?
也许它减少了由于往返而造成的延迟?就像是
LOCK
UPDATE ...
UNLOCK
Run Code Online (Sandbox Code Playgroud)
如果在一个语句中完成,则锁定时间更短。
什么时候,如果有的话,我想在单个语句中组合查询,而不是在单独的语句中?
我通过生成一个URL对象并将其传递给create_engine. 在一段很远很远的代码中,我想找出这个引擎连接到什么,即连接URL。
是否有捷径可寻?使用inspect我只能看到如何获取驱动程序类型。我可以理解连接字符串的密码组件是否不再可用,但我希望其他所有内容仍然可用。
有任何想法吗?
我注意到我使用连接字符串来迁移身份数据库。无论我做什么,我都找了又找,但我找不到数据库。所以我重新评估了我的连接字符串,发现它们并不那么相似:
var connectionString = @"Server=localhost;Database=MyDatabase;Trusted_Connection=True;"
var connectionString = @"Data Source=(LocalDb)\MSSQLLocalDB;database=gritzy.IdentityServer4.dbo;trusted_connection=yes;";
Run Code Online (Sandbox Code Playgroud)
一个只是将服务器指定为 localhost,另一个甚至根本没有指定服务器。
我的印象是 localhost 只会使用默认的 MSSQLSERVER 实例名称。
数据源和服务器之间有什么区别?
我正在尝试连接到本地机器上的 h2 数据库以创建一个 sql DataSource 对象。我正在运行 Windows,但在我的项目 app.properties 文件中定义数据文件的路径时遇到了一些问题。
假设本地目录数据文件的路径是:
D:\projects\myproject\data\project
Run Code Online (Sandbox Code Playgroud)
如何为此定义连接 url?
我尝试了很多事情,包括以下内容:
project.db.url = jdbc:h2:tcp://localhost\\\\D:\\projects\\myproject\\data\\project
Run Code Online (Sandbox Code Playgroud)
然后我想可能是 JDBC URL 的问题,所以我尝试了:
project.db.url = jdbc:h2:tcp:\\\\localhost\\\\D:\\projects\\myproject\\data\\project
Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×3
jdbc ×2
excel ×1
h2 ×1
java ×1
linq ×1
localdb ×1
mysql ×1
oracle ×1
sql-server ×1
sqlalchemy ×1
web-config ×1