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 ?



  • Hat keiner eine idee



  • Dein Code ist C++, nicht C. Du bist offensichtlich im falschen Forum gelandet. Versuch's eine Tür weiter 🙂



  • "SELECT * FROM SearchResult where FileName LIKE '% ";
        sql += text;
        sql += " %'";
    

    (Leereichen)
    oder

    "SELECT * FROM SearchResult where FileName LIKE ('% ";
        sql += text;
        sql += " %')";
    

    eventuell...



  • Crossposting


Anmelden zum Antworten