postgresql 使用Npgsql提供程序从.NET访问Postgresql

示例

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