J'ai récemment été chargé de mettre à niveau une application de .net 1.1 à 3.5 et suis tombé sur un RowFilter sur un DataView qui avait un comportement différent entre les deux versions.Différence entre ADO.NET 1.0 et 3.5 en utilisant RowFilter et les chaînes?
Voici mon bloc de code dans 1.1 qui fonctionne dans 1.1 mais pas 3.5. Je reçois l'erreur suivante en essayant d'exécuter ceci en 3.5 "Impossible d'exécuter '=' opération sur System.String et System.Int32" Les deux 1.1 et 3.5 frappent la même base de données, je suis juste confus quant à la façon dont 1.1 voit la chaîne paramètre et le traite comme une chaîne sans avoir à mettre des marques de tic autour de lui mais en 3.5 il voit rptNum et vous oblige à mettre des tics autour de lui. Le champ dans le dv est une chaîne DataType.
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = " + rptNum;
}
return dv;
}
Voici mon bloc de code dans 3.5 modifié pour que cela fonctionne. J'ai dû ajouter des marques de tic autour du paramètre de chaîne afin qu'il le traite comme une chaîne.
private DataView BuildDataView(string rptNum) {
DataView dv = null;
if(dt != null) {
dv=new DataView(dt);
dv.RowFilter="reporting_number = '" + rptNum + "'";
}
return dv;
}
Non Je ne reçois pas le message d'erreur. – TampaRich
OK, cela voudrait dire que la vérification de type n'a pas lieu "à l'avance" dans 1.1, ce qui semble être le cas dans 3.5. – davek