【发布时间】:2011-01-04 09:30:40
【问题描述】:
我在 C# 和 PostgreSQL 中出现错误“已经有太多客户端” 我是不是做错了什么?
这是我的主要代码
public class NationalService
{
private NpgsqlConnection conn;
protected string query;
public NationalService()
{
this.conn = ConnectionService.GetConnection();
}
public string GetNamaWilayah(string kodePropinsi, string kodeKabupaten)
{
this.query = "select namakabupaten from dim_gab_wilayah where kodepropinsi='" + kodePropinsi + "' and kodekabupaten='" + kodeKabupaten + "' group by namakabupaten";
string namaKabupaten;
using (NpgsqlCommand command = new NpgsqlCommand(this.query, this.conn))
{
using (NpgsqlDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
namaKabupaten = dr["namakabupaten"].ToString();
return namaKabupaten;
}
}
}
return string.Empty;
}
}
这就是我获得连接的方式
public class ConnectionService
{
public static NpgsqlConnection GetConnection()
{
string connStr = WebConfigurationManager.ConnectionStrings["local"].ConnectionString;
NpgsqlConnection conn = new NpgsqlConnection(connStr);
conn.Open();
return conn;
}
}
我没有写 conn.close(); 之类的东西。 但是我写的是conn.Open in using。
我在 postgresql.conf 中将 max_connections = 100 更改为 1000
你能给我提示吗?
提前致谢
【问题讨论】:
-
可能是一种优化:使用ExecuteScalar 而不是 ExecuteReader + 返回第一个值的 while 循环。
标签: c# postgresql database-connection connection-pooling