当前位置: 当前位置:首页 >系统运维 >PostgreSQL的PDF.NET驱动程序构建过程 正文

PostgreSQL的PDF.NET驱动程序构建过程

2025-11-04 14:02:26 来源:多维IT资讯作者:应用开发 点击:563次
PostgreSQL的PDF.NET驱动程序构建过程
复制using System;   using System.Collections.Generic;   //using System.Linq; using System.Text;   using System.Data;   using Npgsql ;   namespace PWMIS.DataProvider.Data   {   /// <summary> /// PostgreSQL数据访问类 /// </summary> publicclass PostgreSQL : AdoHelper       {   /// <summary> /// 默认构造函数 /// </summary> public PostgreSQL()           {   // // TODO: 在此处添加构造函数逻辑 //         }   /// <summary> /// 获取当前数据库类型的动程枚举 /// </summary> publicoverride PWMIS.Common.DBMSType CurrentDBMSType           {   get { return PWMIS.Common.DBMSType.PostgreSQL ; }            }   /// <summary> /// 创建并且打开数据库连接 /// </summary> /// <returns>数据库连接</returns> protectedoverride IDbConnection GetConnection()           {               IDbConnection conn = base.GetConnection();   if (conn == null)               {                   conn = new NpgsqlConnection (base.ConnectionString);   //conn.Open ();             }   return conn;           }   /// <summary> /// 获取数据适配器实例 /// </summary> /// <returns>数据适配器</returns> protectedoverride IDbDataAdapter GetDataAdapter(IDbCommand command)           {               IDbDataAdapter ada = new NpgsqlDataAdapter((NpgsqlCommand)command);   return ada;           }   /// <summary> /// 获取一个新参数对象 /// </summary> /// <returns>特定于数据源的参数对象</returns> publicoverride IDataParameter GetParameter()           {   returnnew NpgsqlParameter();           }   /// <summary> ///  获取一个新参数对象 /// </summary> /// <param name="paraName">参数名</param> /// <param name="dbType">参数数据类型</param> /// <param name="size">参数大小</param> /// <returns>特定于数据源的参数对象</returns> publicoverride IDataParameter GetParameter(string paraName, System.Data.DbType dbType, int size)           {               NpgsqlParameter para = new NpgsqlParameter();               para.ParameterName = paraName;               para.DbType = dbType;               para.Size = size;   return para;           }   /// <summary> /// 返回此 NpgsqlConnection 的数据源的架构信息。 /// </summary> /// <param name="collectionName">集合名称</param> /// <param name="restrictionValues">请求的亿华云计算序构架构的一组限制值</param> /// <returns>数据库架构信息表</returns> publicoverride DataTable GetSchema(string collectionName, string[] restrictionValues)           {   using (NpgsqlConnection conn = (NpgsqlConnection)this.GetConnection())               {                   conn.Open();   if (restrictionValues == null && string.IsNullOrEmpty(collectionName))   return conn.GetSchema();   elseif (restrictionValues == null && !string.IsNullOrEmpty(collectionName))                   {   if (collectionName == "Procedures")   returnthis.getProcedures();   else return conn.GetSchema(collectionName); //Procedures                 }   else                 {    if (collectionName == "ProcedureParameters")   return getFunctionArgsInfo(restrictionValues[2]);   else return conn.GetSchema(collectionName, restrictionValues);                   }               }           }   /// <summary> /// 预处理SQL语句,语句中不能包含"`"(反引号,建过tab键上面的动程那个符号)号,如果需要,WordPress模板序构请使用参数化查询。建过 /// </summary> /// <param name="SQL"></param> /// <returns></returns> protectedoverridestring PrepareSQL(refstring SQL)           {   return SQL.Replace("[",动程 "\"").Replace("]", "\"");           }   /// <summary> /// 获取或者设置自增列对应的序列名称 /// </summary> publicoverridestring InsertKey           {   get             {   returnstring.Format("select currval(\"\")",base.InsertKey );               }   set             {   base.InsertKey = value;               }           }   /// <summary> /// 定义获取PostgreSQL的函数参数的函数 /// <seealso cref="http://www.alberton.info/postgresql_meta_info.html"/> /// </summary> privatevoid createFunctionArgsInfo()           {   //由于函数定义语句较长,放到了资源文件中 string sql = PWMIS.PostgreSQLClient.Properties.Resources.sql_function_args;   this.SqlServerCompatible = false;   this.ExecuteNonQuery(sql);           }   /// <summary> /// 获取函数的免费信息发布网序构参数信息 /// </summary> /// <param name="functionName">函数名</param> /// <returns></returns> private DataTable  getFunctionArgsInfo(string functionName)           {   string sql = string.Format("select * from function_args(,public);", functionName);               DataSet ds = null;   try             {                   ds= this.ExecuteDataSet(sql);               }   catch             {                   createFunctionArgsInfo();                   ds = this.ExecuteDataSet(sql);               }               DataTable dt = ds.Tables[0];               dt.Columns["pos"].ColumnName = "ordinal_position";               dt.Columns["argname"].ColumnName = "PARAMETER_NAME";               dt.Columns["datatype"].ColumnName = "DATA_TYPE";               dt.Columns["direction"].ColumnName = "PARAMETER_MODE";               dt.Columns.Add("IS_RESULT", typeof(string));               dt.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(int));   foreach (DataRow row in dt.Rows)               {   if(row["PARAMETER_NAME"] == DBNull.Value)  row["PARAMETER_NAME"] =  "";                    row["IS_RESULT"] = row["PARAMETER_NAME"].ToString() == "RETURN VALUE" ? "YES" : "NO";                   row["PARAMETER_MODE"] = row["PARAMETER_MODE"].ToString() == "o" ? "OUT" : row["PARAMETER_MODE"].ToString() == "i" ? "IN" : row["PARAMETER_MODE"];               }   return dt;           }   private DataTable getProcedures()           {   string sql = @"SELECT routine_name     FROM information_schema.routines    WHERE specific_schema NOT IN          (pg_catalog, information_schema)      AND type_udt_name != trigger;";   returnthis.ExecuteDataSet(sql).Tables[0];           }       }   }   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.138.139.140.141.142.143.144.145.146.147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171.172.173.174.175.176.177.178.179.180.181.182.183.184.185.186.187.188.189.190.191.192.193.194.195.196.
作者:应用开发
------分隔线----------------------------
头条新闻
图片新闻
新闻排行榜