CDatabase und Acess und SQL - String mit Like



  • Hallo und Guten Morgen. Ich bin dabei eine kleine Datenbank anwendung zu schreiben, die alle Dateien auf der Fetsplatte scannt ( also nach namen und datum usw. ) diese daten werden in eine access datenbank geschrieebn. das funktioneirt auch ganz gut . ich benutze dabei die klasse cdatabse.nun möchte ich aber auch die datenbank durchsuchen. ich bastle mir dabei einen sql string zusammen.

    void FileManager::SearchFile(std::string text)
    {
    	// Duchsucht die Datenbank nach den text
    	std::string sql = "SELECT * FROM SearchResult where FileName LIKE '%";
    	sql += text;
    	sql += "%'";
    
    	std::cout << sql << "\n";
    
    	CRecordset rc(&db);
    	try
    	{
    		rc.Open(CRecordset::forwardOnly,sql.c_str());
    	}
    	catch(CDBException *exp)
    	{
    		std::cout << (LPCTSTR)exp->m_strError << "\n";
    	}
    
    	int i = 0;
    	//rc.MoveFirst();
    
    	while (! rc.IsEOF() )
    	{
    		rc.MoveNext();
    		i++;
    	}
    
    	std::cout << i << "\n";
    
    	rc.Close();
    
    }
    

    das komische ist ich habe in access den sql string geprüft und der funktioniert. aber leider nicht aus meinem programm . wenn ich das ganze nicht mit like sonder mit "=" mache geht es. aber da ich ja nach einem teilstringk suchen will nutz mir "=" wenig. WEiß jemand rat ?



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Was ist denn die Fehlermeldung?

    [EDIT] für access musses wohl LIKE "*blabla*" lauten. [/EDIT]

    mfg
    xXx



  • Hi Danke für eure Antworten. Also das mit der Klammer funjktioniert. Es gab leider keine Fehlermeldung. Ich habe im record nur ekeine Datensätze gehabt


Anmelden zum Antworten