.NET操作postgre数据库的两种方式

前提:添加好Mono.Security.dll和Npgsql.dll的引用

方式1:用自带的NpgsqlConnection创建链接对象

这是最基本的方式了

例如拿到postgre数据库里面所有的表

using (var conn = new NpgsqlConnection(“webconfig文件配置的ConnectionString”))
            {
                conn.Open();
               IList<string> result = new List<string>();
           string sql = "select tablename from pg_tables where schemaname='public'";
           NpgsqlCommand command = new NpgsqlCommand(sql, conn);
           NpgsqlDataReader Resource = command.ExecuteReader();
 
           while (Resource.Read())
           {
               for (int i = 0; i < Resource.FieldCount; i++)
               {
                   string tableName = Resource[i].ToString();
                   result.Add(tableName);
               }
           }
           return result;
            }

方式2:在web.config文件里配置好provider

首先配置好connectionStrings

  <connectionStrings>  
    <add name="Demo1Postgresql" 
    connectionString="PORT=5432;HOST=127.0.0.1;
    DATABASE=Demo1;USER ID=postgres;PASSWORD=123456" providerName="Npgsql2"/>
   </connectionStrings>

这里面填写的providerName需要加上下面的配置

  <system.data>   
   <DbProviderFactories>     
    <add name="Npgsql2 Data Provider" 
    invariant="Npgsql2" description=".Net Framework Data Provider for PostgreSQL"
     type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.5.0, Culture=neutral,
      PublicKeyToken=5d8b90d52f46fda7" />  
   </DbProviderFactories> 
  </system.data>

 invariant的值要和 上面的 connectionString里面写的 providerName的值应该一致!

且Type的值应该填写的是你引用的Npgsql DLL的信息。

但是这个信息怎么得到呢?

请打开调试的立即窗口

然后输入 [ typeof(Npgsql.NpgsqlFactory).AssemblyQualifiedName ]就会出来了

以上配置好后利用下面代码就OK了

var connStr = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
var providerName = ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName;
 DbProviderFactory dbFactory = DbProviderFactories.GetFactory(providerName);
 IDbConnection  dbConnecttion = dbFactory.CreateConnection();
            dbConnecttion.ConnectionString = connStr;
            dbConnecttion.Open();


你可能感兴趣的:(.NET操作postgre数据库的两种方式)