C#中使用PostgreSQL
一、C#连接postgresql
1.为了访问PostgreSQL数据库,需要从pgfoundry网站,下载Npgsql .Net Data Provider for Postgresql
的组件。
访问 URL:http://pgfoundry.org/frs/?group_id=1000140
注:因为使用的是Net4.0,所以下载了Npgsql-2.2.3-net40.zip。
2.解压缩zip文件,把 Npgsql.dll
和Mono.Security.dll
文件拷贝到C#工程目录的packages目录中,加入到References。
3.在需要使用Npgsql的C#文件头,加入如下的using语句 : using Npgsql;
二、使用
2.1 连接字符串
1、在配置文件配置的方法:配置文件中加入如下语句:
<!--要访问的数据库IP地址、端口号、数据库名称、数据库登录名、密码。遇到乱码 加上Encoding-->
<connectionStrings>
<add name="postgre" connectionString="PORT=5432;DATABASE=Demo;HOST=localhost;PASSWORD=root;USER ID=postgres" />
</connectionStrings>
在代码中获取配置文件中连接字符串:
string connstr =ConfigurationManager.ConnectionStrings["postgre"].ToString();
2、在代码中配置的方法:
string ConStr = @"PORT=5432;DATABASE=Demo;HOST=localhost;PASSWORD=root;USER ID=postgres" ;
2.2 建立连接
NpgsqlConnection SqlConn = new NpgsqlConnection(ConStr);
2.3 使用DataAdapter查询,返回DataSet
public DataSet ExecuteQuery(string sqrstr)
{
DataSet ds = new DataSet();
try
{
using(NpgsqlDataAdapter sqldap = new NpgsqlDataAdapter(sqrstr, sqlConn))
{
sqldap.Fill(ds);
}
return ds;
}
catch (System.Exception ex)
{
CloseConnection();
return ds;
}
}
2.4 增删改操作
public int ExecuteNonQuery(string sqrstr)
{
try
{
sqlConn.Open();
using (NpgsqlCommand SqlCommand = new NpgsqlCommand(sqrstr, sqlConn))
{
int r = SqlCommand.ExecuteNonQuery(); //执行查询并返回受影响的行数
sqlConn.Close();
return r; //r如果是>0操作成功!
}
}
catch (System.Exception ex)
{
CloseConnection();
return 0;
}
}
2.5 返回DataReader的查询
public DbDataReader GetReader( string cmdText)
{
if (sqlConn.State != ConnectionState.Open)
sqlConn.Open();
try
{
using (NpgsqlCommand cmd = new NpgsqlCommand(cmdText,sqlConn))
{
NpgsqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return sdr;
}
}
catch(System.Exception ex)
{
CloseConnection();
return null;
}
}