C# ADO Wyszukiwanie danych, nie uwzględnia parametrów OleDbCommand

C# ADO Wyszukiwanie danych, nie uwzględnia parametrów OleDbCommand
S1
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Nowy Sącz
  • Postów:46
0

Witam serdecznie.
Piszę mały program przy użyciu bazy mdb(Microsoft Data Access)
mam taki kawałek kodu

Kopiuj
OleDbConnection database;
string strPath;

strPath = AppDomain.CurrentDomain.BaseDirectory + "Baza.mdb";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath;
database = new OleDbConnection(connectionString);
database.Open();

string findText = "t";
string queryString = "SELECT Contactnr,Name FROM Person WHERE Name LIKE '%@p1%' ORDER BY Name;";
            OleDbCommand command = new OleDbCommand(queryString,database);
            DataTable data = null;
           
            command.Connection = database;
            command.Parameters.Add(new OleDbParameter("@p1", findText));
            
            
            OleDbDataAdapter dataAdapter = null;
                
            data = new DataTable();
            dataAdapter = new OleDbDataAdapter(command);
            dataAdapter.Fill(data);
database.close();

Ten kod nie zwraca mi wyników żadnych
a gdy zamiast @p1 w słowie like dam czystego stringa np. "t" to bez problemowo wyszukuje mi dane.
Co mam nie tak ??, nie uwzględnia mi OleDbParametr wcale o co chodzi ??
Dzięki serdeczne za pomoc.

edytowany 2x, ostatnio: scorpion_1982
TA
  • Rejestracja:ponad 9 lat
  • Ostatnio:około rok
  • Postów:315
0

Hmm dawno tego nie dotykalem ale:

  1. sprawdz czy @ jest uzywana jako parametr dla tego drivera (znaki sa rozne dla roznych baz/driverow)
  2. sprawdz ....Name LIKE @p1... i ustaw jako @p1="%"+fineText+"%" - to mi sie wydaje bardziej prawdopodobne
S1
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Nowy Sącz
  • Postów:46
0

Znalazłem na forum jakimś Angielskojęzycznym że nie wolno podawać znaków obok czyli musi wyglądać zapytanie tak

Kopiuj
string findText = "t";
string queryString = "SELECT Contactnr,Name FROM Person WHERE Name LIKE @p1 ORDER BY Name;";
            OleDbCommand command = new OleDbCommand(queryString,database);
            DataTable data = null;

            command.Connection = database;
            command.Parameters.Add(new OleDbParameter("@p1", "%" + findText + "%"));

Taki zapis działa ok, więc temat do zamknięcia..
P.S Małpa jest wymagana w tym driverze..
Dzięki.
Pozdrowionka

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.