Неверный способ составления запроса. Это может привести к SQL инъекционным атакам. Я бы предложил вам использовать SqlParameter
s.
string commandText = "IF NOT EXISTS(SELECT * FROM dbo.SAP_Mat_StoreBGA WHERE "
+ "Material = @Material " +
+ " AND MaterialDescription = @MaterialDescription)"
+ "BEGIN"
+ "INSERT INTO dbo.SAP_Mat_StoreBGA (Material,MaterialDescr) "
+ "VALUES (@Material ,@MaterialDescription)"
+ "END";
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = @commandText;
cmd.Parameters.Add("@Material", SqlDbType.Varchar,30).Value=row["Material"];
cmd.Parameters.Add("@MaterialDescription",SqlDbType.Varchar,255).Value=
row["MaterialDescr"];
В фоновом режиме он будет использовать sp_execute sql для выполнения параметризованного оператора.
exec sp_executesql N'IF NOT EXISTS(SELECT * FROM dbo.SAP_Mat_StoreBGA where
Material = @Material
BEGIN
AND MaterialDescription = @MaterialDescription)
INSERT INTO dbo.SAP_Mat_StoreBGA (Material,MaterialDescr)
VALUES (@Material ,@MaterialDescription)
END', N'@Material VARCHAR(30),@MaterialDescription VARCHAR(255)',@Material='ABC'
,@MaterialDescription='ABC Description'