Mówisz całkowitą nieprawdę! Nie potrzebujesz żadnych funkcji usuwających backslashe etc., ponieważ takie rzeczy formatowane są "w locie".
Wstaw do tabeli, którą napisałem takie coś:
insert strings(String) values('Firma "Usługowo-transportowa" Bill Gates')
Następnie uruchom ten program, wpisz w textboksa tę wartość: Firma "Usługowo-transportowa" Bill Gates
i wciśnij Enter
. Zaświadczam Ci, że zostanie znaleziona!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace App
{
class Program
{
static IList<string> Find(string phrase)
{
using (var conn = new SqlConnection(@"Data Source=THINKPAD\SQLEXPRESS;Database=TestDB;Trusted_Connection=yes;"))
{
conn.Open();
using (var cmd = new SqlCommand("SELECT s.Id, s.String AS Found FROM Strings s WHERE s.String = @param", conn))
{
cmd.Parameters.Add(new SqlParameter("@param", phrase));
using (var reader = cmd.ExecuteReader())
{
var result = new List<string>();
while (reader.Read())
{
result.Add(reader["Found"].ToString());
}
return result;
}
}
}
}
static void Main(string[] args)
{
var form = new Form();
var textbox = new TextBox();
form.Controls.Add(textbox);
textbox.Dock = DockStyle.Fill;
textbox.KeyPress += (sender, e) =>
{
if (e.KeyChar == (char)Keys.Return)
{
MessageBox.Show(string.Join(",", Find(textbox.Text)));
}
};
form.ShowDialog();
}
}
}
To samo rzecz jasna dotyczy innych znaków specjalnych.