In einem Kommentar, den Sie angeben, dass alle Spalten sind varchar
und Sie nicht konvertieren alles zu Int, aber Ihre SQL ist WHERE CODE = 13
.
So code
ist auch ein varchar
. Durch die mit dem Vergleich int
13 Sie nicht konvertieren 13-varchar
aber umgekehrt konvertieren Sie jeden Wert in code
zu einem int
.
Warum? Wegen der data type precedence Regel:
- der Datentyp mit der niedrigeren Priorität wird mit der höheren Priorität in den Datentyp umgewandelt
int
hat eine höhere Priorität, so dass alle varchar
Werte int
umgewandelt werden. Ich nehme an, Sie haben einen Wert 'DADA'
in dieser Spalte, die nicht in int
konvertiert werden kann.
So ist die Lösung ist einfach, machen es zu einem varchar
von '13'
anstelle von 13
:
SELECT * FROM p_details
WHERE LOWER(name) LIKE '%has%ln%'
AND
CODE = '13'
AND
T_CODE = 'H'
von Apart, dass Sie immer SQL-Parameter verwenden sollten SQL-Injektion zu verhindern:
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;
bitte setzen einige mehr Code sollte nicht diesen Fehler kommen, weil Sie nicht konvertieren DADE – wiretext
Dies ist die einzige Sache, die ich habe, Abrufen von Daten aus der Datenbank und Schließen der connection.In Datenbanktabelle alle Spalte als varchar, aber ich weiß nicht, warum es in int konvertiert. – krishnakumar
Versuchen Sie statt dessen '' SqlDataAdapter' 'zu verwenden: (var da = neuer SqlDataAdapter (sql, con)) da.Fill (dt); ' –