2017-02-22 9 views
0

現在、次のクエリselect * from TableName WHERE ColumnName ='values''s'からデータセットを取得していますが、クエリはエラーなしで実行され、戻り値のデータセットは空の行です。 SQLワークシートで同じものを実行すると、データが返されます。一重引用符を使用したSQLクエリはレコードを取得しません

次のコードは次のとおりです。

string sqlQuery = "select * from TableName WHERE Name ='McNaught''s'"; 
SqlConnection conn = new SqlConnection(ConnectionString); 
SqlCommand cmd = conn.CreateCommand(); 
cmd.CommandText = sqlQuery; 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = cmd; 
DataSet ds = new DataSet();    
conn.Open(); 
adapter.Fill(ds); 
conn.Close(); 
+0

whereの条件に含める実際の値は何ですか? –

+0

ここで私はColumnName = 'McNaught'と肥料の – SAA

+0

を含むクエリを固定SQLまたは動的SQL(C#文字列を連結する)したいですか? –

答えて

0

これを試してください:

string sqlQuery = 'SELECT * FROM TableName WHERE Name ="McNaught\'s"' 
0

問題は、あなたがそのため、コンパイラは、前のアポストロフィを区別することができます第二'前にエスケープシーケンスを提供する必要があります。これを試して。

string sqlQuery = "select * from TableName WHERE Name ='McNaught'\'s'"; 
SqlConnection conn = new SqlConnection(ConnectionString); 
SqlCommand cmd = conn.CreateCommand(); 
cmd.CommandText = sqlQuery; 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = cmd; 
DataSet ds = new DataSet();    
conn.Open(); 
adapter.Fill(ds); 
conn.Close(); 
0

これは\エスケープシーケンスで動作します。

string sqlQuery = "select * from TableName WHERE Name ='McNaught\"s'"; 
関連する問題