【发布时间】:2011-09-17 05:29:23
【问题描述】:
我在项目中添加了一个 MS Access 文件,VS 为我创建了一个数据集。我对此非常满意,但现在我遇到了一个小问题:
我想在 app.config 文件中包含连接字符串,以允许客户对其进行编辑。我转到 app.config 文件,我看到了这个连接字符串,我认为是“很棒”。
不过好像没有用这个。我发现使用的 connectionString 包含在 Settings.settings 文件中,我无法在运行时对其进行编辑。
知道如何解决这个问题吗?如果需要,我什至可以通过编程方式为自己指定连接字符串,但我没有找到如何指定它。
非常感谢!
编辑:这里有一些代码:
生成代码的一个示例似乎引用了 Settings.settings 文件:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
private void InitConnection() {
this._connection = new global::System.Data.OleDb.OleDbConnection();
this._connection.ConnectionString = global::Infoteam.CliniqueLaSource.DocuShare.Communication.DatabaseAccess.Properties.Settings.Default.ClsConnectionString;
}
我在 app.config 文件中的内容:
<connectionStrings>
<add name="Infoteam.CliniqueLaSource.DocuShare.DatabaseAccess.Properties.Settings.ClsConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Workspace\CliniqueLaSource.CLS-DocuShare\Main\Resources\Cls.mdb;Persist Security Info=True"
providerName="System.Data.OleDb" />
</connectionStrings>
我在 Settings.settings 文件中的内容:
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Infoteam.CliniqueLaSource.DocuShare.DatabaseAccess.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="ClsConnectionString" Type="(Connection string)" Scope="Application">
<DesignTimeValue Profile="(Default)">
<?xml version="1.0" encoding="utf-16"?>
<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ConnectionString>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Cls.mdb;Persist Security Info=True</ConnectionString>
<ProviderName>System.Data.OleDb</ProviderName>
</SerializableConnectionString>
</DesignTimeValue>
<Value Profile="(Default)">Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Cls.mdb;Persist Security Info=True</Value>
</Setting>
</Settings>
</SettingsFile>
这是我正在做的一个小例子:
ClsDataSet dataSet = new ClsDataSet();
DOCDOCUMENTSTableAdapter adapter = new DOCDOCUMENTSTableAdapter();
adapter.Fill(dataSet.DOCDOCUMENTS);
return dataSet.DOCDOCUMENTS.ToList();
【问题讨论】:
-
请显示配置文件中显示连接字符串的代码 sn-p (并在必要时从中删除敏感信息)。我问的原因是 .settings 文件和 .config 文件之间存在关系,我们也许可以更好地解释。此外,如果您可以在代码中找到您说使用 .Settings 字符串而不是 .config 字符串的位置,那将有所帮助。
-
是否无法从设置文件中删除 conn 字符串,然后将考虑 app.config 中的字符串。以编程方式,您可以使用 conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=" + Server.MapPath("Pets/Pets.mdb"));
-
@David:我添加了一些代码 :) @Rahul:不,这是不可能的,如果我这样做,我在生成的代码中有编译错误,它找不到连接字符串。我可以在我的代码中的哪里指定此连接? (而且我不在服务器上,它是一个简单的客户端应用程序
-
可能是……我只是好奇。无论如何,如果您想在代码中指定 conn 字符串,请查看此 MSDN post for MS Access。它还提供了一个示例,这将有所帮助。 msdn.microsoft.com/en-us/library/ms971485.aspx
-
我查看了您的代码,但它没有使用 Visual Studio 自动生成的任何 DataSet。
标签: c# .net visual-studio-2010 ms-access dataset