如何操作SQL连接字符串

时间:2010-06-10 07:18:08

标签: c# connection connection-string

我正在尝试操作SQL连接字符串,因此它不是运行我们数据库的原始副本,而是从我们的C#项目中的副本文件夹运行。

5 个答案:

答案 0 :(得分:2)

DbConnectionStringBuilder类是一种操作连接字符串的各种键/值对的好方法。您应该使用相关的提供者特定的connectionstringbuilder类。

答案 1 :(得分:1)

试试看: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

如果您使用SQL Server,它比尝试操作字符串要好得多......

答案 2 :(得分:0)

最简单的方法可能是,不是按原样存储连接字符串,而是为要用不同值替换的位放置占位符。如果您使用{0}{1}等,则可以在运行时使用string.Format插入正确的值。

答案 3 :(得分:0)

我不是100%确定问题的背景是什么,但以下内容可能适合您。 一种方法是让App.Config完成工作:

<configuration>
  <configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </configSections>
<dataConfiguration defaultDatabase="DEV" />
<connectionStrings>
    <add name="DEV" connectionString="Database=xxx;Server=xxx;Trusted_Connection=True" providerName="System.Data.SqlClient" />
    <add name="LIVE" connectionString="Database=xxx;Server=xxx;Trusted_Connection=True" providerName="System.Data.SqlClient" />
</connectionStrings>...

然后,您可以使用以下代码获取默认连接字符串(您可能希望将其放在单独的类中,以便在整个代码中使用它。)

    public static string DefaultDatabase
    {
        get
        {
            SystemConfigurationSource scs = new SystemConfigurationSource();
            return DatabaseSettings.GetDatabaseSettings(scs).DefaultDatabase;
        }
    }

    public static string DefaultConnectionString
    {
        get
        {
            return ConfigurationManager.ConnectionStrings[Sql.DefaultDatabase].ConnectionString;
        }
    }

答案 4 :(得分:0)

如果您正在使用xsds / adapters,则需要在应用程序启动时手动设置适配器的connectionString。如果你的适配器在一个单独的库中,你需要使用签名重载适配器的构造函数,你可以传递一个connectionString(如果是这种情况,请阅读下面的内容)。用于创建xsd的第一次connectionString被缓存。

如果是这种情况,请执行以下操作:

假设你有User.xsd。右键单击然后查看代码。如果展开(+)xsd。

,您会注意到会创建User.cs

您可能已生成此代码:

namespace Adapters {


    public partial class User
    {
    }
}

您应该添加以下内容:

namespace Adapters.UserTableAdapters
{
    public partial class UsersTableAdapter : global::System.ComponentModel.Component
    {
        public UsersTableAdapter(string connectionString)
        {
            this._clearBeforeFill = true;
            this._connection = new System.Data.SqlClient.SqlConnection();
            this._connection.ConnectionString = connectionString;
        }
    }
}

现在,当您初始化UsersTableAdapter时,将connectionString传递给它。

因为我在整个网站上都使用了connectionString,并且为了继续阅读web.config很烦人,我创建了这个简单的类:

namespace Data
{
    public class DataModule
    {
        private static string _connectionString = String.Empty;


        public static string ConnectionString
        {
            get
            {
                if (_connectionString == String.Empty)
                    throw new Exception("DataModule not initialized");
                return _connectionString;
            }
        }

        public static void initialize(string connectionString)
        {
            _connectionString = connectionString;
        }
    }
}

在ApplicationStart上,我打电话给

DataModule.Initialize(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

请注意,此类仅支持1个connectionString。您可以轻松修改它以支持许多。

如果您更好地描述您的环境,我们可以为您提供更多帮助=)