我在项目中添加了MS Access文件,VS为我创建了一个DataSet。我很高兴,但现在我遇到了一个小问题:
我希望在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();
答案 0 :(得分:2)
当VS为您创建强类型DataSet
时,它还会在DataAdapters
周围创建强类型包装,以填充DataSet
并更新数据库。
可以将这些强类型包装器或TableAdapters
配置为使用您想要的任何连接。只需将Connection
属性设置为使用您希望的连接字符串初始化的连接,即可完成设置。
如果每次创建新的TableAdapter
时设置连接太麻烦,您也可以利用它们作为partial
类。这意味着每次DataSet设计器工具更新底层代码并重载DataTable构造函数时,您可以添加另一个不会被覆盖的代码文件,以便它接受连接字符串或连接实例,并在构造函数中相应地设置属性:
public partial class MyTableTableAdapter
{
public MyTableTableAdapter(OleDbConnection connection)
{
if (connection == null)
throw new ArgumentNullException("connection");
base.Connection = connection;
}
public MyTableTableAdapter(string connectionString)
{
base.Connection = new OleDbConnection(connectionString);
}
}
如果你有很多TableAdapters
这可能是一个麻烦,你最好只是在每次实例化TableAdapter
时手动设置连接
答案 1 :(得分:1)
看看这是否有帮助:http://www.connectionstrings.com/
修改强>
对不起,第一次误读了。
http://www.codeproject.com/KB/vb/PersistConnectionStrings.aspx
这是你想要完成的吗?