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