相似但不一样:
大家好,我有一个C#WinForms应用程序连接到数据库服务器.数据库连接字符串(包括通用用户/传递)放在NHibernate配置文件中,该文件与exe文件位于同一目录中.
现在我遇到了这个问题:运行应用程序的用户不应该知道普通数据库用户的用户名/密码,因为我不希望他直接在数据库中搜索.
或者,我可以硬编码连接字符串,这是不好的,因为管理员必须能够在移动数据库时更改它,或者如果他想在dev/test/prod环境之间切换.
很久以来我发现了三种可能性:
通常通过使文件仅对运行应用程序的用户可读来回答第一个引用的问题.
但在我的情况下这还不够(运行应用程序的用户是一个人.数据库用户/通行证是一般的,甚至不应该被人访问.)
第一个答案还建议在将连接数据写入文件之前加密连接数据.
使用这种方法,管理员不再能够配置连接字符串,因为他无法手动加密.
在第二个引用的问题提供了这种非常情况下的做法,但似乎很复杂.
我向你提问:
这是一个非常普遍的问题,所以没有任何一般的"怎么做"的方式,不知何故是一种"设计模式"?
.NET的配置基础架构是否有一些支持?
(可选,可能超出范围)我可以轻松地将其与NHibernate配置机制结合起来吗?
更新:
回答第一个答案:有几个原因我想直接连接到数据库而不使用Web服务:
您是否有任何进一步的想法考虑到这一点?
C#VS 2010 .net v4.0
我将DataSet添加到我的项目(类库)中,当我尝试添加TableAdapter时,我添加到Settings的连接字符串无法选择.我有其他数据源(来自服务器资源管理器)的连接字符串可用.我无法使用解决方法,我需要从Settings中提取连接字符串.我在许多其他项目中做同样的事情,它通常有效,但有时候我只做随机事情,直到我终于看到我的连接字符串.我希望升级到vs2010能解决这个问题.希望有人见过这个并且可以提供帮助,谢谢.
所以,我有一个带有面板的页面,当找到web配置中的连接并且连接有效时,该面板将显示; 使用try/catch,只要添加名称"VALUE"在配置连接字符串中,如果服务器数据不好,页面将加载并且面板设置为不可见...我需要能够处理以下内容. ..
如果在这种情况下,在aspx中使用MySqlServer的命名值; aspx.cs但在配置中找不到我不希望发生错误; 找不到连接名称....我只是想不显示面板,就像当找到名称时SqlConnection.Open失败但数据不好...
ASPX
<asp:SqlDataSource runat="server" ID="allowedIPsSqlDataSource"
ConnectionString="<%$ ConnectionStrings:MySqlServer %>"
Run Code Online (Sandbox Code Playgroud)
aspx.cs
string connectionString = ConfigurationManager.ConnectionStrings["MySqlServer"].ToString();
SqlConnection SqlConnection = new SqlConnection(connectionString);
SqlCommand SqlCommand = new SqlCommand();
try
{
SqlConnection.Open();
Run Code Online (Sandbox Code Playgroud)
配置
<connectionStrings>
<add name="NotMySqlServer" providerName="System.Data.SqlClient" connectionString="server=TEST\SQL2005;database=ADB;Integrated Security=True"/>
<add name="NotMy2SqlServer" providerName="System.Data.SqlClient" connectionString="server=TEST\SQL2005;database=ADB;Integrated Security=True"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud) 我有一个旧的asp.net 1项目(它在旧服务器上工作正常,mytable存在于db中.现在我正在尝试将其升级到asp.net 4
我的连接字符串是:
<add key="SqlConnection"
value="DRIVER={SQL Server};SERVER=bel\SQLEXPRESS;Trusted_connection=yes;DATABASE=mydb;option=3;"/>
Run Code Online (Sandbox Code Playgroud)
我收到错误
错误[42S02] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无效的对象名称'mytable'.
OdbcCommand dataCommand = new OdbcCommand("select*from mytable",dataConnection);
dataCommand.CommandTimeout = 900;
OdbcDataReader dataReader = dataCommand.ExecuteReader(CommandBehavior.CloseConnection);
当我写SQL时,select * from mydb.dbo.mytable一切正常
我应该在数据库设置(安全性,架构,dbo)或连接字符串中更改什么?
我有一个4/5项目的解决方案.
我目前在ac#文件中硬编码了我的域项目的连接字符串.
我想把它放在web.config或其他东西.从我在这里和其他地方阅读的内容,我应该将这些连接字符串存储在调用应用程序的Web配置中?
如果是这样,我如何访问它?
当我在我的类库中执行类似的操作时:
ConnectionStringSettingsCollection connectionStrings =
connectionStringsSection.ConnectionStrings;
Run Code Online (Sandbox Code Playgroud)
无法找到类型或命名空间,我错过了引用或其他什么?
我需要尝试更新web.config文件以更改web.config的IP地址我已经包含了代码部分我正在寻找powershell来编写更改脚本.
<connectionStrings>
<add name="connectionString" connectionString="provider=SQLOLEDB;Server=192.168.1.100;database=sample;Trusted_Connection=Yes" providerName="System.Data.OleDb" />
<add name="sqlConnectionString" connectionString="Data Source=192.168.1.100;Initial Catalog=sample;Trusted_Connection=Yes" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我想要一个非常简单的解决方案,只需更新ServerIP地址即可.
任何人都知道使用PowerShell执行此操作的简单方法.
我想在我的网站上实现Asp.net Forms身份验证.通常,您在web.config中提供数据库连接字符串的名称.但是,由于我们的数据库设置稍微复杂一点,我一直在寻找一种方法来手动为MembershipProvider提供代码中的连接字符串.
谢谢!
假设我使用Entity Framework Code First创建了简单的WPF应用程序来创建数据库,连接到它并显示一些数据.从开始我不想担心连接字符串,所以在通过Nuget添加entityframework引用后,我将获得自动生成的app.config,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我将运行test并观察连接字符串:
var strings = ConfigurationManager.ConnectionStrings;
Run Code Online (Sandbox Code Playgroud)
结果:
[0] = {data source=.\SQLEXPRESS;Integrated Security=SSPI;attachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}
Run Code Online (Sandbox Code Playgroud)
由于我想定义自己的连接字符串,我将把它添加到我的app.config中:
<connectionStrings>
<add name="MyContext" connectionString="data ource=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\myDb.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
因此,当我再次运行测试并观察连接时,我可以看到现在有两个:
[0] = {data source=.\SQLEXPRESS;Integrated Security=SSPI;attachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}
[1] = {data source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\myDb.mdf;Integrated Security=True}
Run Code Online (Sandbox Code Playgroud)
为什么我能看到两个连接字符串?如果第一个是默认的,一旦我创建了它,是否应该忘记它?
谢谢
在SQL Server Profiler中分析.Net应用程序时,默认的应用程序名称来自数据提供程序.如何将其更改为我自己的应用程序名称?
我正在使用C#和.NET Framework 4.7开发解决方案.
该解决方案具有ASP.NET Web MVC应用程序和Windows服务.两者都连接到同一个数据库,现在我正在使用他们的配置文件进行存储.
有没有其他方法来存储两个应用程序都可以使用它的连接字符串?
我不想在两个配置文件中复制相同的信息.
我还想分享另一种设置.
c# ×6
settings ×2
sql-server ×2
.net ×1
app-config ×1
asp.net ×1
database ×1
dataset ×1
nhibernate ×1
odbc ×1
powershell ×1
schema ×1
tableadapter ×1
validation ×1
web-config ×1