.Net Core Npgsql 预处理语句

.Net Core Npgsql Prepared Statement

我一直在尝试通过使用准备好的语句来更改 .Net Core 应用程序中的一些 SQL 语句以提高可重用性,但我在使用 NpgsqlDbType 时遇到了问题。

我已尝试按照文档说明进行操作。

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

但是编译失败,说

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

我错过了什么吗?如何使用 NpgsqlDbType?

更新

我只是把最后的工作放在这里,以防其他人受益

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

NpgsqlDbType 在 NpgsqlTypes 命名空间中。确保你在顶部有一个 using NpgsqlTypes。

如果要同时设置值,请使用AddWithValue而不是Add

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

如果想一次加参数,多次执行,可以保留参数的引用

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

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