zoukankan      html  css  js  c++  java
  • 关于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;
            }
  • 相关阅读:
    Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考
    linux 修改时间时区,修改语言
    远程链接mysql error 2003
    Android NDK r10c 编译boost 1.55 (使用Cygwin)
    linux上cocos2dx Android打包环境
    linux上cocos2dx 环境配置
    linux, windows编译安装 boost库 (boost 1.56)
    编译安装 gcc 4.8.3
    vim配置添加python
    mvn设置
  • 原文地址:https://www.cnblogs.com/yukun/p/1101239.html
Copyright © 2011-2022 走看看