Npgsql是Postgresql最受欢迎的.NET提供程序之一,它ADO.NET兼容并且与其他.NET数据库提供程序几乎相同地使用。
典型的查询是通过创建命令,绑定参数然后执行命令来执行的。在C#中:
var connString = "Host=myserv;Username=myuser;Password=mypass;Database=mydb";
using (var conn = new NpgsqlConnection(connString))
{
var querystring = "INSERT INTO data (some_field) VALUES (@content)";
conn.Open();
// 使用CommandText和Connection构造函数创建一个新命令
using (var cmd = new NpgsqlCommand(querystring, conn))
{
// 添加参数并使用NpgsqlDbType枚举设置其类型
var contentString = "你好,世界!";
cmd.Parameters.Add("@content", NpgsqlDbType.Text).Value = contentString;
// 执行不返回任何结果的查询
cmd.ExecuteNonQuery();
/* It is possible to reuse a command object and open connection instead of creating new ones */
// 创建一个新查询并设置其参数
int keyId = 101;
cmd.CommandText= "SELECT primary_key, some_field FROM data WHERE primary_key = @keyId";
cmd.Parameters.Clear();
cmd.Parameters.Add("@keyId", NpgsqlDbType.Integer).Value = keyId;
// 执行命令并逐行读取行
using (NpgsqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read()) // 对于0行或在读取结果的最后一行之后返回false
{
// 读取一个整数值
int primaryKey = reader.GetInt32(0);
// 要么
primaryKey = Convert.ToInt32(reader["primary_key"]);
// 读取文字值
string someFieldText = reader["some_field"].ToString();
}
}
}
} // C#“使用”指令为我们调用conn.Close()和conn.Dispose()