当前位置: 首页 > 编程语言 > C#

在运行时设置强类型数据集连接字符串的最佳方式?分享

时间:2023-04-10 17:12:02 C#

在运行时设置强类型数据集连接字符串的最佳方式?我的Windows窗体应用程序使用使用设计器在VisualStudio中创建的强类型数据集。在运行时,我希望能够选择一个实时或测试数据库。在运行时以编程方式为数据集设置连接字符串的最佳方法是什么?TableAdapters中的Connection属性被定义为内部的。internalglobal::System.Data.SqlClient.SqlConnectionConnection因此,如果您的TypedDataset与主Windows窗体应用程序不在同一个程序集中,您将无法访问Connection属性。当您重构数据集代码并将其移动到将生成其自己的单独程序集的单独项目时,此问题可能会在稍后弹出。要解决此问题,您可以按照以下说明进行操作。为TableAdapter创建一个分部类,并在默认的无参数构造函数旁边添加另一个构造函数。假设TableAdapter类型是MyTableAdapterpublicpartialclassMyTableAdapter{publicMyTableAdapter(SqlConnectionconnection){thisSetConnection(connection);this.ClearBeforeFill=true;}publicvoidSetConnection(SqlConnectionconnection){this._connection=connection;TableAdapter执行此操作。TableAdapter没有任何公共基类,但由于它们被声明为部分类,我们可以按照我上面提到的方式进行。现在,在运行时,您可以像这样创建TableAdapter的实例。SqlConnection连接;//在运行时在这里创建连接..MyTableAdapteradapter=newMyTableAdapter(connection);或者您甚至可以在使用默认的无参数公共构造函数创建TableAdapter实例后对其进行分配。SqlConnection连接;//在运行时在这里创建连接..MyTableAdapteradapter=newMyTableAdapter();适配器。(连接);将它们的连接字符串存储在app.config中,然后您可以根据命令行/启动开关进行切换。或者,如果您想为您的用户提供灵活性,您可以给他们一个选项页面来选择要使用的连接。下面是读取启动开关的代码:string[]args=Environment.GetCommandLineArgs();//第一个(0索引)命令行参数是exe路径。if(args.Length>1){if(Array.IndexOf(args,"/live")!=-1){//连接字符串=//ConfigurationSettings.AppSettings["LiveConString"];}}else{//连接字符串=//ConfigurationSettings.AppSettings["TestConString"];所以现在你通过调用启动你的应用程序:MyApp.exe/live单独使用MyApp.exe或使用任何其他开关将获得测试配置。Re:wethercotescomment向导在设置数据集时存储连接字符串,但这并不意味着您不能使其动态化。这取决于您使用的版本,但通常如果您展开Datasets下的文件,您会发现类似Designer.cs或DataTableNameAdapter.xsd的内容。您可以打开这些文件并搜索_connection。这通常是一个私有变量,在类中的init函数中设置。您可以通过添加如下代码使设置动态化:publicstringConnectionString{get{returnthis._connection.ConnectionString;}set{if(this._connection==null){this._connection=newSystem.Data.SqlClient.SqlConnection();}this._connection.ConnectionString=值;注意,如果重新生成数据集,这部分代码可能会丢失,如果不重构数据集,可能需要添加到多个对象中。使用TableAdapterManager可能适合您。请阅读更多信息:http://rajmsdn.wordpress.com/2009/12/09/strongly-typed-dataset-connection-string/到目前为止我找到的最佳解决方案:添加另一个程序设置,设置保存首选客户端在运行时设置的连接字符串(例如newConnectionString),然后在使用表适配器之前:this.myTableAdapter.Connection.ConnectionString=Properties.Settings.Default.newConnectionString;编辑设计器文件很痛苦。我在“用户”下创建了一个名为“ConnectionString”的设置条目,这使得VisualStudio在添加强类型数据集时创建了一个应用程序字符串“ConnectionString1”。所以我只是将数据集设计器文件中的所有“ConnectionString1”替换为“ConnectionString”,这将允许您使用“User”字符串设置在运行时加载连接字符串。恕我直言,这是一个缺点,允许用户在运行时修改连接字符串。(有人在Redmond收听吗?)C#学习教程就这些:在运行时设置强类型数据集连接字符串的最佳方式?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: