Domanda

Ho un database Pervasive che mi collego ad usare C ++. Tutte le mie domande finora è parametrizzato, cioè "SELECT USER.NAME FROM USER WHERE USER.ID = ?", e che funziona bene. Ma in una query di ricerca che uso come nella clausola WHERE, e allora sembra che non posso utilizzare i parametri e caratteri selvatici (%).

La mia domanda simile a questa "SELECT * FROM DOG WHERE DOG.NAME LIKE '%?%'" e dato che ci sono due 'intorno il parametro? -Mark, questo non riesce, è cercato per i cani con un? -Mark nel loro nome. In SQL Server questo probabilmente essere risolto concatenando la stringa come "SELECT * FROM DOG WHERE DOG.NAME LIKE '%' + ? + '%'", ma questa è la sintassi non valida in Pervasive (vedi in fondo a questa pagina: http://ww1.pervasive.com/library/docs/psql/950/sqlref/sqlref-04-55.html ).

Inoltre ho provato ad aggiungere i -signs% al parametro stesso, ma che non sembra funzionare.

Qualcuno sa una soluzione a questo?

Edit1: Qualche esempio C ++ Codice:

CString sqlCommand = "SELECT * FROM DOG WHERE DOG.NAME LIKE ?;";
m_pAdoCommand->CommandText = _bstr_t(sqlCommand);
m_pAdoCommand->Parameters->Append( m_pAdoCommand->CreateParameter("p0", adVarChar, adParamInput, 25, _bstr_t("'%bob%'")) );
m_pAdoRecordset = m_pAdoCommand->Execute(NULL,NULL,adCmdText);

(m_pAdoCommand è un _CommandPtr, e m_pAdoRecordset è un _RecordsetPtr. Ho cambiato il nome delle tabelle SQL in questo esempio in modo che essi fanno sens qui.)

Il codice di cui sopra restituirà una riga con un cane che ha il nome '%bob%', ma mi sarebbe piaciuto tornare tutti i cani che hanno bob nel loro nome.

È stato utile?

Soluzione

Perché non si aggiunge un jolly per il valore che si sta assegnando al parametro?

Quindi, questo significa che, la query si presenta come

SELECT * FROM dog WHERE dog.name LIKE ?

E poi, si assegna il valore '% bob%' a questo parametro, per esempio. Vedo dici che hai provato anche questo, ma non funziona, che è molto strano. Si può mostrare il codice di quello che hai fatto, allora?

Vedo anche che si mette tra virgolette il parametro in uno dei vostri esempi. Questo non suona come una buona idea, in quanto il parametro non verrà riconosciuto come un parametro più. A quel punto, si tratta solo di una stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top