c#からSQL Serverの名前付きインスタンスに接続しようとしています。私はこのサイトで同様の記事を見ましたが、私が持っている問題はないようです。C#名前付きインスタンスに接続するときにSQL Server Extra Slashが文字列に追加される
テーブルから値を文字列に読み込みます。名前付きインスタンスを文字列に入れると、スラッシュが追加され、接続されません。したがって、データベースフィールドに "myserver \ myinstance"がある場合、それを文字列に読み込むと、 "myserver \ myinstance"として終了します。興味深いことに、文字列ビルダークラスを使用する場合は、スラッシュが1つしかありません。それを文字列に変換すると、余分なスラッシュができます。私の問題はSQL関連ではなく、文字列関連のように聞こえる。
public class MyClass
{
private Hashtable ipAddresses;
private void LoadPlants()
{
// get a list of plants from the plant table
String conString = "Data Source=myserver;Initial Catalog=mydb;Integrated Security=SSPI;";
string strSql = "select distinct ServerName, IPAddress from location where ipaddress is not null and ltrim(rtrim(ipaddress)) <> ''";
SqlConnection con = new SqlConnection(conString);
con.Open();
SqlDataAdapter dAdapter = new SqlDataAdapter();
dAdapter.SelectCommand = new SqlCommand(strSql, con);
DataSet dset = new DataSet();
dAdapter.Fill(dset, "location");
con.Close();
// populate the checked list box with the list of plants
DataTable dt = dset.Tables["location"];
ipAddresses = new Hashtable();
for (int i = 0; i <= dt.Rows.Count -1; i++)
{
chklbPlants.Items.Add(dt.Rows[i]["ServerName"], false);
string strPlantName;
string strIpAddress;
StringBuilder sb = new StringBuilder();
sb.Append(dt.Rows[i]["IPAddress"].ToString()); // returns 192.168.0.3\mydbinstance
strPlantName = dt.Rows[i]["ServerName"].ToString();
strIpAddress = dt.Rows[i]["IPAddress"].ToString(); // returns 192.168.0.3\\mydbinstance
ipAddresses.Add(dt.Rows[i]["ServerName"].ToString(), dt.Rows[i]["IPAddress"].ToString());
}
}
}
-- drop table location
use someDB
go
create table location
(
ServerName varchar(255),
IPAddress varchar(255)
)
insert into location
(ServerName, IPAddress)
values
('testserver1', '192.168.1.1')
insert into location
(ServerName, IPAddress)
values
('testserver2', '192.168.1.2')
insert into location
(ServerName, IPAddress)
values
('testserver3', '192.168.1.3\mydbinstance')
insert into location
(ServerName, IPAddress)
values
('testserver4', '192.168.1.4')
go
select * from location
go
私はそれはおそらくエスケープ文字とは何かを持って知っているが、私はどのようにわからない。ここで
は、あなたがそれを必要とする場合には、コードですそれを正しく扱います。
おかげで、
セス
あなたは正しいです。ありがとう!私はそれがちょうどタイムアウトしたと思う。あるいは、私のコードで変更されたものかもしれません。いずれにせよ、ありがとう! –