In un commento è affermare che tutte le colonne sono varchar
e non vi convertirete niente per int ma il tuo sql è WHERE CODE = 13
.
Quindi code
è anche un varchar
. Confrontandolo con lo int
13 non si converte 13 in varchar
ma viceversa, si converte ogni valore in code
in un int
.
Perché? A causa della data type precedence regola:
- il tipo di dati con precedenza inferiore viene convertito nel tipo di dati con la più alta priorità
int
ha una precedenza maggiore così tutti varchar
valori sono convertiti in int
. Presumo che tu abbia un valore 'DADA'
in quella colonna che non può essere convertito in int
.
Quindi la soluzione è semplice, ne fanno un varchar
utilizzando '13'
invece di 13
:
SELECT * FROM p_details
WHERE LOWER(name) LIKE '%has%ln%'
AND
CODE = '13'
AND
T_CODE = 'H'
A parte che si dovrebbe sempre utilizzare parametri SQL per evitare che SQL-injection:
SELECT * FROM p_details
WHERE LOWER(name) LIKE @lowname
AND
CODE = @code
AND
T_CODE = @tCode
com4.Parameters.Add("@lowname", SqlDbType.VarChar).Value = "%" + name.ToLower() + "%");
com4.Parameters.Add("@code", SqlDbType.VarChar).Value = code;
com4.Parameters.Add("@tCode", SqlDbType.VarChar).Value = tCode;
fonte
2015-08-26 07:57:24
prega inserire altro codice non dovrebbe venire quell'errore perché non si sta convertendo DADE – wiretext
Questa è l'unica cosa che sto avendo, ottenere dati dal database e chiudere la connessione. Nella tabella del database tutte le colonne come varchar, ma non so perché si sta convertendo in int. – krishnakumar
Prova ad usare un 'SqlDataAdapter' invece:' usando (var da = nuovo SqlDataAdapter (sql, con)) da.Fill (dt); ' –