.Net Core Npgsql Disiapkan Pernyataan

Sep 09 2020

Saya telah mencoba untuk mengubah beberapa pernyataan SQL dalam aplikasi .Net Core agar lebih dapat digunakan kembali dengan menggunakan Pernyataan Disiapkan tetapi saya mengalami masalah dengan NpgsqlDbType.

Saya sudah mencoba mengikuti instruksi dokumentasi.

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

Tapi itu gagal untuk dikompilasi, katanya

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

Apakah saya melewatkan sesuatu? Bagaimana cara menggunakan NpgsqlDbType?

MEMPERBARUI

Saya hanya menempatkan hal kerja terakhir di sini seandainya itu dapat menguntungkan orang lain

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

Jawaban

2 ESG Sep 09 2020 at 02:16

NpgsqlDbType ada di namespace NpgsqlTypes. Pastikan Anda menggunakan NpgsqlTypes di bagian atas.

Jika Anda ingin mengatur nilai pada saat yang sama, gunakan AddWithValuebukanAdd

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

Jika Anda ingin menambahkan parameter satu kali dan mengeksekusi beberapa kali, Anda dapat menyimpan referensi ke parameter tersebut

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

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