Instruction préparée pour .Net Core Npgsql
J'ai essayé de modifier certaines instructions SQL dans une application .Net Core pour qu'elles soient plus réutilisables en utilisant des instructions préparées, mais j'ai des problèmes avec le NpgsqlDbType.
J'ai essayé de suivre les instructions de documentation.
NpgsqlCommand command = new NpgsqlCommand (
" select * from computers where com_phys = @com_phys ",
dbconnection
);
command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);
command.Prepare();
Mais il ne parvient pas à compiler, en disant
The name 'NpgsqlDbType' does not exist in the current context
Est-ce que je manque quelque chose? Comment utiliser le NpgsqlDbType?
METTRE À JOUR
Je mets juste la dernière chose qui fonctionne ici au cas où cela pourrait profiter à quelqu'un d'autre
// prepare
NpgsqlCommand command = new NpgsqlCommand (
" select * from computers where com_phys = @com_phys ",
dbconnection
);
var param01 = command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);
command.Prepare();
// execute 01
param01.Value = "value01";
var results = command.ExecuteReader();
while(results.Read()) {
// nothing
}
command.Close();
// execute 02
param01.Value = "value02";
var results = command.ExecuteReader();
while(results.Read()) {
// nothing
}
command.Close();
Réponses
NpgsqlDbType se trouve dans l'espace de noms NpgsqlTypes. Assurez-vous d'avoir un NpgsqlTypes en haut.
Si vous souhaitez définir la valeur en même temps, utilisez à la AddWithValueplace deAdd
NpgsqlCommand command = new NpgsqlCommand (
" select * from computers where com_phys = @com_phys ",
dbconnection
);
command.Parameters.AddValue("com_phys", NpgsqlDbType.Varchar, value);
// OR command.Parameters.AddValue("com_phys", NpgsqlDbType.Varchar, size, value);
// OR command.Parameters.AddValue("com_phys", value);
command.Prepare();
Si vous souhaitez ajouter le paramètre une fois et l'exécuter plusieurs fois, vous pouvez conserver une référence au paramètre
var parameter = command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);
// Later, in a loop
parameter.Value = "someValue";