• 关于PostGreSQL中的存储过程


    PostGreSQL中没有了像MSSql中的存储过程,但是有一个替代的都东西可以使用,就是函数,对于函数的使用方法,比如创建一个简单的查询一个表中的所有记录,我们这里根据这个公司所在地点来查询,这是一个Point类型,对于这种结合类型比较要'~='符号,下面类出表定义的SQL语句
    Create table Google_Company(
        ID SERIAL,    --SERIAL 是PostGreSql中的数据类型,相当于Mssql中的自增类型
        Name  varchar(50),
       Geometry Point,
       Description  varchar(255),
       CONSTRAINT Google_CompanyKey PRIMARY KEY(ID)
    )
    插入两条数据
    insert into google_company(companyname,geometry,abstract,url,image,subcategoryid) values('csu',point(28.5,113.0),'test','http://www.google.cn','d:',1);
    insert into google_company(companyname,geometry,abstract,url,image,subcategoryid) values('csu',point(28.3,112.99),'test','http://www.google.cn','d:',1)
    创建函数
      Create function ListCompany(Geometry) RETURNS SETOF Google_Company
    $$ 
        select * from google_company where geometry~=$1            --这里$1表示传进来的第一个传输,$n表示第n个参数
    $$ LANGUAGE SQL

    这样一个postGreSQL中的函数就创建好了,下面我们在.net中使用它将其查询出来,这里我们引进一个新的dataprovider,在安装了postGreSQL中后就有一个Npgsql目录,里面有可以在.net中查询postGreSQL中数据的组件,在你的项目中引用它就可以了,而且其封装的很好,很遵循标准的ADO.NET模型
    下面是根据上述建立表和函数来尽心在客户端查询的C#代码,放出来给大家参考参考,然后还有一个连接字符串,
     <add key="postGres" value="Server=127.0.0.1;Port=5432;User Id=postgres;Password=123;Database=MyGoogle;Encoding=UNICODE;"/>

    using (NpgsqlConnection conn = new NpgsqlConnection(WebConfigurationManager.AppSettings["postGres"]))
            {
                NpgsqlCommand cmd = new NpgsqlCommand();
                cmd.CommandText = "ListCompany(:pt)";
                cmd.Parameters.Add(new NpgsqlParameter("pt", NpgsqlDbType.Point));
                cmd.Parameters[0].Value = new NpgsqlPoint(loc.X, loc.Y);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = conn;
                conn.Open();
                NpgsqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    _member.CompanyID = Convert.ToInt32(dr["companyID"]);
                    _member.Geometry = (NpgsqlPoint)dr["geometry"];
                    _member.Image = dr["image"].ToString();
                    _member.URL = dr["URL"].ToString();
                    _member.CompanyName = dr["companyname"].ToString();
                    _member.Abstract = dr["abstract"].ToString();
                    _member.SubCategoryID = Convert.ToInt32(dr["subcategoryID"]);       
                }
                conn.Close();
                lblCompanyName.Text = _member.CompanyName;
                lblAbstract.Text = _member.Abstract;
            }
  • 相关阅读:
    关于OPENSSL的EVP函数的使用
    在docker下面安装Nginx PHP mysql let's encrypt
    【转】如何统计网站(如个人博客)访问量
    CoolEdit对比两段音频文件:将两段音频文件放在左右声道
    matlab常用的清空和关闭命令(清空变量区、清空命令行、清空图像等)
    TMS320F28335利用ePWM改变ADC采样频率(双通道)示例代码
    Matlab中rand、randn、randi、rands的区别以及用randn生成白噪声的示例
    Matlab中find()寻找函数的常见用法
    【转】 博客园自定义样式修改网页icon图标
    UltraEdit 高亮文档中同名变量
  • 原文地址:https://www.cnblogs.com/yukun/p/1101239.html
Copyright © 2020-2023  润新知