.Net Core Npgsql Vorbereitete Anweisung

Sep 09 2020

Ich habe versucht, einige SQL-Anweisungen in einer .Net Core-App so zu ändern, dass sie mithilfe von vorbereiteten Anweisungen wiederverwendbarer sind, aber ich habe Probleme mit dem NpgsqlDbType.

Ich habe versucht, den Dokumentationsanweisungen zu folgen.

NpgsqlCommand command = new NpgsqlCommand (
    " select * from computers where com_phys = @com_phys ",
    dbconnection
);
command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);
command.Prepare();

Aber es kann nicht kompiliert werden

The name 'NpgsqlDbType' does not exist in the current context

Vermisse ich etwas Wie verwende ich den NpgsqlDbType?

AKTUALISIEREN

Ich stelle hier nur die letzte Arbeit vor, falls es jemand anderem zugute kommen kann

// 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();

Antworten

2 ESG Sep 09 2020 at 02:16

NpgsqlDbType befindet sich im NpgsqlTypes-Namespace. Stellen Sie sicher, dass Sie oben NpgsqlTypes verwenden.

Wenn Sie den Wert gleichzeitig festlegen möchten, verwenden Sie AddWithValueanstelle vonAdd

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();

Wenn Sie den Parameter einmal hinzufügen und mehrmals ausführen möchten, können Sie einen Verweis auf den Parameter behalten

var parameter = command.Parameters.Add("com_phys", NpgsqlDbType.Varchar);

// Later, in a loop
parameter.Value = "someValue";