Instrução preparada de .Net Core Npgsql
Sep 09 2020
Tenho tentado alterar algumas instruções SQL em um aplicativo .Net Core para ser mais reutilizável usando instruções preparadas, mas estou tendo problemas com o NpgsqlDbType.
Tentei seguir as instruções da documentação.
NpgsqlCommand command = new NpgsqlCommand (
" select * from computers where com_phys = @com_phys ",
dbconnection
);
command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);
command.Prepare();
Mas está falhando ao compilar, dizendo
The name 'NpgsqlDbType' does not exist in the current context
Estou esquecendo de algo? Como faço para usar o NpgsqlDbType?
ATUALIZAR
Estou apenas colocando a coisa final de trabalho aqui, caso possa beneficiar alguém
// 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();
Respostas
2 ESG Sep 09 2020 at 02:16
NpgsqlDbType está no namespace NpgsqlTypes. Certifique-se de ter um usando NpgsqlTypes na parte superior.
Se você quiser definir o valor ao mesmo tempo, use em AddWithValuevez 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();
Se quiser adicionar o parâmetro uma vez e executar várias vezes, você pode manter uma referência ao parâmetro
var parameter = command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);
// Later, in a loop
parameter.Value = "someValue";
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino