MS Access文件的连接字符串?

时间:2011-06-17 13:55:03

标签: c# .net visual-studio-2010 ms-access dataset

我在项目中添加了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)">
        &lt;?xml version="1.0" encoding="utf-16"?&gt;
        &lt;SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
        &lt;ConnectionString&gt;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Cls.mdb;Persist Security Info=True&lt;/ConnectionString&gt;
        &lt;ProviderName&gt;System.Data.OleDb&lt;/ProviderName&gt;
        &lt;/SerializableConnectionString&gt;
      </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();

2 个答案:

答案 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

这是你想要完成的吗?