C# MS Access文件的连接字符串?
我将MS Access文件添加到项目中,VS为我创建了一个数据集。我对此很满意,但现在我有一个小问题: 我想在app.config文件中包含连接字符串,以允许客户对其进行编辑。我转到app.config文件,看到了这个连接字符串,我想“太好了” 但这似乎没有被使用。我发现使用的connectionString包含在Settings.Settings文件中,我无法在运行时编辑该文件 你知道怎么解决这个问题吗?如果需要,我甚至可以通过编程方式指定自己的连接字符串,但我没有找到如何指定这个字符串 多谢各位 编辑:这里有一些代码: 生成的代码的一个示例似乎引用了Settings.Settings文件:C# MS Access文件的连接字符串?,c#,.net,visual-studio-2010,ms-access,dataset,C#,.net,Visual Studio 2010,Ms Access,Dataset,我将MS Access文件添加到项目中,VS为我创建了一个数据集。我对此很满意,但现在我有一个小问题: 我想在app.config文件中包含连接字符串,以允许客户对其进行编辑。我转到app.config文件,看到了这个连接字符串,我想“太好了” 但这似乎没有被使用。我发现使用的connectionString包含在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;
}
<?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>
我在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>
看看这是否有帮助:
编辑
对不起,第一次看错了
这就是您试图实现的目标吗?当VS为您创建强类型的
数据集时,它还将围绕数据适配器创建强类型包装,以填充数据集并更新数据库
这些强类型包装器或TableAdapters
可以配置为使用您想要的任何连接。只需将Connection
属性设置为使用所需连接字符串初始化的连接,即可全部设置完毕
如果每次创建新的TableAdapter
时设置连接太麻烦,您还可以利用它们是部分类的优势。这意味着您可以添加另一个代码文件,该文件不会在每次DataSet designer工具更新基础代码并重载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);
}
}
如果您有很多TableAdapter
,这可能会让您感到厌烦,您最好在每次实例化TableAdapter
时手动设置连接,这不是他想要的。。。。。我想你没有读我的帖子。。。我确切地知道要设置什么连接字符串,问题是我需要在app.config文件中设置它,而它使用的是Settings.Settings文件中的连接字符串。是的,我很抱歉,我读错了,在我发布这篇文章后发现了这一点。@Jeff Sheldon:不,我希望应用程序使用app.config文件中的连接字符串(它是由visual studio创建的)。因为我可以编辑它,而无需visual studio重建它。我理解。该代码应该允许您通过执行以下操作来更改设置连接字符串:My.settings.SetUserOverride(“ConnectionString1”,ConfigurationManager.ConnectionStrings(“MyAppConnString”))请显示显示连接字符串的配置文件中的代码段(必要时从中删除敏感信息)。我问的原因是,.settings文件和.config文件之间存在关系,我们可以更好地解释。此外,如果您能在代码中找到使用了.settings字符串而不是.config字符串的地方,这会有所帮助。是否不可能先从设置文件中删除conn字符串,然后再从ap中删除conn字符串p、 配置将被考虑。在编程上,您可以使用conn=new-OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;”“+”数据源=“+Server.MapPath(“Pets/Pets.mdb”);@David:I添加了一些代码:)@Rahul:No,这是不可能的,如果我这样做,我在生成的代码中有编译错误,找不到连接字符串。我可以在代码中的什么位置指定此连接?(我不在服务器上,这是一个简单的客户端应用程序可能……我只是好奇。不管怎样,如果您想在代码中指定conn字符串,请查看此MSDN post for MS Access。它还提供了一个示例,会有所帮助。我查看了您的代码,但它没有使用任何由visual Studio自动生成的数据集。)我有一个访问器,可以创建每个表适配器,所以我将直接使用它!谢谢!
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);
}
}