Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何删除“;提供者=…”;从连接字符串_C#_Regex - Fatal编程技术网

C# 我如何删除“;提供者=…”;从连接字符串

C# 我如何删除“;提供者=…”;从连接字符串,c#,regex,C#,Regex,我有一个带有sql任务和c#脚本任务的SSIS 它有一个项目参数conn(类型为字符串),其值为: Data Source=serverName;Initial Catalog=dbName;Provider=SQLNCLI11.1;Integrated Security=SSPI; sql任务使用oledb连接,oledb连接使用此字符串。sql任务调用一个存储过程。此sql任务有效 c#script任务也需要使用它,它使用SqlConnection。 (我可以使用一个单独的项目参数,该参数

我有一个带有sql任务和c#脚本任务的SSIS

它有一个项目参数
conn
(类型为字符串),其值为:

Data Source=serverName;Initial Catalog=dbName;Provider=SQLNCLI11.1;Integrated Security=SSPI;
sql任务使用oledb连接,oledb连接使用此字符串。sql任务调用一个存储过程。此sql任务有效

c#script任务也需要使用它,它使用
SqlConnection
。 (我可以使用一个单独的项目参数,该参数不包含“Provider”,但似乎效率不高)

但是,
SqlConnection
不喜欢关键字“Provider”,我无法将其更改为使用
OleDbConnection
(我的c语言能力不强)

因此,我需要从这个字符串中删除
Provider=blabla
。我想用正则表达式替换String.replace

我该怎么做


谢谢大家!

因为您有两个不同的客户机,有不同的需求,所以我将使用两个字符串。是否将两组代码都存储在同一目录中

如果你想坚持使用一个字符串,我想最简单的方法是

connectionString.Replace(“Provider=SQLNCLI11.1;”,“”)

您还可以将该元素移动到字符串的末尾,获取“Provider=”的索引,并仅从0-index读取。这将保护您的代码,防止将来有人更改为其他提供程序


connectionString.SubString(0,s.IndexOf(“Provider=”)

一般来说,不直接修改连接字符串更安全,而是使用特定提供商的
连接StringBuilder
为您执行此操作:

var conn = " Data Source=serverName;Initial Catalog=dbName;Provider=SQLNCLI11.1;Integrated Security=SSPI; ";
var connBldr = new OleDbConnectionStringBuilder(conn);
connBldr.Remove("provider");
conn = connBldr.ConnectionString;

也就是说,另一种方法是在
上拆分字符串字符,删除任何包含“provider”的部分,然后使用
将它们重新连接起来字符:

conn = string.Join(";", conn.Split(';').Where(c => 
    !c.TrimStart().StartsWith("provider", true, null)));

它起作用了!谢谢你,这很简洁。编辑:我确实尝试过这个方法,它也很管用,但是你的方法要好得多:“var newConn=new-OleDbConnectionStringBuilder(conn);newConn.Remove(“Provider”);conn=newConn.ToString();”根据经验,永远不要直接创建或操作连接字符串,使用相应的ConnectionStringBuilder来处理它。