资源简介
Npgsql User Manual Npgsql用户使用手册-简体中文版 100%由原官方文档翻译。
<@ Assembly name="System. Data"2> <s@ Assembly name="Npgsql"8> 你可以从这里获得更多的细节 FAQ Mono Page about ASP. NET 建立连接 使用名为“joe”密码为“ secret”的用户,建立一个到IP地址为127.0.0.1,端∏为5432的服务器上的“ joedata”的数据库的连接,可以使 用以下的连接字符串来打开 NpgsqlConnection。 using system; using system. Data using Pgsql public class NpgsqlUserManual public static void Main(String[] args) NpgsqlCo nection Con Npgsq-Connection ("Server=127.0.0. 1i Port=5432; User Id=joe; Password=secret; Database=joedata: )i con Cpen() co'n Close() 连接字符串里的参数 建立连接的时候, Npgsql Connection可以接受一些用以改变其行为的参数,下面就是现在你可以使用的参数列表:(溟自 NpgsqlConnection 的源代码) 连接 PostgreSQL数据厍时,可以获取或者设置这些字符串。合法的值有: Server PostgresQL服务器的IP地或名字 Por 用以连接的端口 Protocol 使用的协议版本,可以用 Integer类型的2或者3代替 automatic Database 数据库名字,如果没有指定,默认为与用户名相同 User id 用尸名 Integrated Security 设置为 Windows集成安全性,默认为fase Password 纯文本的身份验证密码 SSL True或者 False,控制是否使用一个安全的连接(SSL连接),默认为 false Poolin True或者 False,控制是否使用连娈池,默认为True Minpoolsize 连接淝的最小值,指定了连接池的最小值,可以让 Npgsqlo。 nnection预冗分酎指定数量的连接。默认值为1 Maxpoolsize 迕接池的最大值,如果迄接氿内的连接的数量大亍这个值,那么堵塞的连接将被处置掉。默认值为:20 Encoding 已废弁。总是返回“ Unicode”字符串,即使设置它也会被忽略 Timeout 等待连接的事件,单位为秒。默认值为:15 Commandtimeout 等待命令完成执行的时间,超时将抛出异常。单位为秒。默认值为:20 Sslmode 连接控制的方式,可以是以下值中的一个 Prefer 如果有可能使用SSL连接,那么就采用SSL连接。(首选) Require 如果不能建立SSL连接,将拋出异常。(必须) AllOw 如果还不支持,那么就使用非SSL连接。(允许 Disable 使用非SSL连接(不允许) 默认值是“ Disable” Connectional fetime 连接池中不再使用的连接关闭的等待时间。单位:秒,默认值为:15 SyncNotification 指定的话 Npgsq将使用同步消息机制 SearchPath 改变 public的和特定的模式的搜索路径 Pre⊥ oad reade 如果设置为为“‘true”〔默认值为“ false”)的活,数据读取器寝在 Executerεder全部返回前被加载。这将寻致性能损失(特別是在大量的记 录集时,可能导致不可容忍的性能损失〕,它保留下来是为了和之前版本的 Pgsql保持兼容。根据ADO.N氏T文档,当 I DataReader打开用于 获取数据的 IDbConnection时,它的状态被设置为“busy”,不能用于其他任何操作(有一些明确的异常( Exception类)专门针对此规则) Npgsa强制执行这个规则,所以当 Npgsa| Datareader打开后,其他的基于这个用于获取数据的 IDbConnection上的其它操作都将导致 InvalidOperationEⅹ ception( Pgsql放松了这个规则,如果 Npgsq| DataReader已经读到结果集的结尾但是还没有破关闭, Pgsql允午你使 用这个连接。因为这时,它不再从迕接上使用什么资源。) 但是左以前, Npgsq允许用户完全忽赂这个规则。这完全是一个内置的执行问题的副作用,严格来说,它从来没有被支捋过(因为它总是违背 AD◎.NET的规范),而且这一点偷懒可能会让你发现以前运行良好的代码突然挂掉了。如果你确定无论如何都要使用它,可以将它作为修复代码 前的权益之计,基于下两个原因: 性能,尤其是可伸缩性,不适用这个选项仲缩性将更好 Use Extended Types 这个选项可决定 Data Adaptors到底是使用NET的 System Data Time类型还是使用类似 NpgsqlTimestamp这样比 System Data Time类 型具有更多功能和使用范围的 Npgsq的日期和事件类型。选项设置为“ Either”允许使用 Pgsql和 System类型,但是如果设置为“true” DataAdaptors将考虑为字段仗用使用定的 Npgsq类型,反之,如果设置为“ false”将使用 Systen. Data time 这个选项是实验性的,有可能因为冲突在新版本中简化或删掉 默认值为“ false Compatibility 这个版本的目的是为了应付不断曾加新的连接字符串选项而带来的破坏性的变更,它的值可以设置为版本号的形式(像这样a.b[.cC[C]).变化 可能会破坏现有的代码,所以,在可能的情况下,尽量复制以前版本的行为。第一个这么做的版本是2.0.2.1,所以在2.0.2中,这个值不会有新 的行为。 版本行为 如果指定字段名找不到,则Ge0 rinal返回-1 0.2 etOrdinal区分假名的宽度 版本行为 口果指定字段名找不到,则 Getordinal将抛出 IndexOutOfRange Exception异常 0.2.1 GetOrdinal不区分假名宽度 使用 Npgsql Command向表格增加一个行 前面的示例其实一点有用的事情也没有做,仅仅是连接效据库,然后断开。如果有错误的话,将抛出一个 Npgsq| Exception异常。现在假设你有 一个名为“ table1”的表,该表恪捐有“ fielda”和“ field”两个字段,类型都是int.如果你想向该表格屮插入(1,1)元组,可以使用以下插入 语句。 using system; using system. Datai using Npgsq public static class NpgsqlUserManual public static void Main(String[ args) NpgsqlConnection Npgsq-Connection("server=127.0.0.liport=5432 User Id=joe; Password=secreti Database=joedata; coIn. Cpe1(): NpgsqlCommand command= new NpgsqlCommand(insert into tablel values(1, 1)", conn); Int32 rows. ffected trv rowsaffected= command. ExecuteNonQuery()i Console. WriteLine("It was added o lines in table tablel" rowsaffected) finally n Close ExecuteNonQuery()是插入和更新查询的理想方法,囚为它返回一个指小受最后一次操作影响的行数的整数。 使用 NpgsqlCommand. EXecute Scalar()方法获取单一的返回值 有些情况下,你只想从函数取回会一个单独的值( scalar)这是你可以使用 Command对象的 Executescalar()方法。 usIng System. Dat. using Pgsql public static class Npgsq-UserManual { public static voi NpgsqIConnection co-n ne Npgsg-Connection("server=127.0.0. liport=5432; User Id=joe; Password=secreti Database=joedata: co-n Cpe(): Npgsql Comma nd command new NpgsqlCommand("select. version(),conn)i string serverversion; try serverversion=(String)command. ExecuteScalar()i Console. WriteLine('EostgresQ- server version: [0], serverversicn)i finally y conn Close(i 你也可以使用 Executescalar执行返回记录集的查询,比如“ select count(*) from table1”。但是,当调用返回一条或更多记录的函数时 只有第一行的第一列能这回(目 Dataset. Tables[0].Rows[o][0])。一股来说,何一个返回单一值的香询都应该使 Command ExecuteScalar 使用 Npgsqlcommand ExecuteReader()方法和 Npgsql DataReader获得完整的结果集 有很多方式可以获得 Pgsql返回的记录集。当你想通过一个sQL语句作为命令的文本和使用高效內存数据读取器访问结果的时候,请使用 Npgsglcommand对象的 EXecuteReader()方法。 using system; using system. Data using Pgsql oublic static class NpgsqlUserManual public static void Main(String[] args) Npgsql Connection Npgsq Connection ("Server=127.0.0. 1 i Port=5432: User Id=joei Password=secreti Database=joedata; )i co-n. cpe NpgsqlCommand command new Npg sqlCommand("select x from tablea, conn)i NpgsglDataReader dr= command. ExecuteReader()i while(dr Read() Tor ( dr. Field i++) insole Write("[0)t", dr[il tinally conn Close()i 记住,你可以在一个 Command对象的 CommandText属性中使用一连串的 select语句来检索多余一个的记录集,就像这样:“ select*from ta blea select k from tableb 在查询中使用参数 参数可以让你在运行时动态的向SQL查询中插入多个值,一般而言,参数绑定是你在客户端代码中产生动态SQL语句的最好方法。而其他的方法, 如基本的串联宇符串的方沄,是不太可靠的,它可能会招致注入攻击。通过在参数名称前附加“:”前缀的方式同你的SQL查询字符串中增加参 数。下面的示例使用一个名为“vaue1”的参数(就像这样“:vaue1”) using system stem. Dat using Pgsql public static class NpgsqlUserManual public static void Main (String[] args) using(NpgsqlConnection conn Npgsq-Connection ("Server=127,0.0. li Port=5432: User Id=joe: Password=secret Database=joedata: ") conn Cpen()i /声明查询语句中使用的参数 using(Npgsq l Commandcommand= rew Npgsgl Command('select s from tablea where colurmr1=: va luel", conn)) Now add the parameter to the parameter collection of the command specifying its type ∥/垗在按照参数的类型将参教添加到参数集合中。 command. Pa rameters. Add(new Pgsql Parameter("valuel", Pgsql DbType Integer)) /7 Now, add a value to it and later execute the command as usual /现在,设置参数的值,并在稍后执行查询。 command Parameters[ ol Value 4 using(NpgsqlDataReader dr command ExecuteReader()) while(dr Read( i=0: i dr. Fieldcount i++ Console. Write("(0\t", dr[i]); Console. Writeine(i 你也可以使用 Pgsql Parameter和 Npgsql Parameter collection对象向服务器发送一个参数化的查询 这段代码假设已存在一个名为“ tablea”的表,且它至少有一个名为“ column1”类型为int4的字段 使用预备语句 预备语句可以优化你经常使用的查询的性能, Prepare()基本上就是“缓存”的查询计划,这样就可以在以后的调用使用它。(记住:这个特性只 能在73以后的版本中使冂,如果你在一个不支持它的服务器中使用它, Npgsq将悄悄的忽略它)在执行查询之前简单的调用 NpgsqlCommand 的 Prepare(方法就可以了。 using system. Datai ng Rpgs public static class NpgsalUserManual public static void Main(String args) using(pgsglConnection conn new Npgsg-Connection ("server=127.0.0. li port=5432; User Id=joe: Password=secreti Database=joedata: ) conn Cpen()i //在查询语句中言明参数 using(NpgsqlCommand command=new NpgsalCommand("select from ablea where column1=: colannl", conn)) //现在,把参数添加到合令的参数集合中,并指定其类型 command Parameters. Add(new NpgsqlParameter ("columnl", Npg sqlDbType. Irtecer) //现在,预各这个命令 //现在,给参数添加一个值,并在梢后像普通方式一样执行这个命令 command Parameters[o.value 4 using(NpgsqlDataReader dr= command. ExecuteReader()) while(dr Read ()i for (1=0: i< dr. Fieldcount; i++ Console. Write("(o\t", dr[i])i onsale. Writeine(i 这段代码假定已存在一个名为“ tablea”的表,且它至少有个一个名为“ column1”类型为int4的字段。 函数调用 要调用函数,需要将 Npgsqlcommand对象的 CommandType属性设置为 CommandType StoredProcedure,并将你要调用的函数名作为 杳询字符串(在 CommandTex属性设置杳询字符申) 译者注:因为 Npgsq中标识符是区分大小写的,所以,如果你的函数名中有大小写,需要将函数名用双引号括起来,比如: command. Commandtext="" getTableName\",这样实际上发送给服务器的函数名字外就有双引号了。 using System. using system. Datai using pgsql //这个示例使用一个名为〃 funct()〃的函数,它的定义如下 / create function funct() returns inte as / select count(x) from tablea; t language Note that the return type of select count (* changed from int4 to inc8 in 7.3+ versions. To use this function /7 in a 7. 2 server, change the return type from int8 to int 4 //注意:在7.3以前的阪本中, select ccu(*)将int4类型转换为int8类型,如果要在7.2版本中使用,需要将int8转化为int4类型 public static class NpgsqlUserManual public static void Main(String[] args) NpgsqlConnection Npgsq-Connection("server=127.0.0. liPort=5432i User Id=joe; Password=secret; Database=joedata: )i con. Cpen(): NpgsqlCommanc command new NpgsqlCommand("funct", conn) corman. CommandType= CommandType StoredProcedure Object result command Executescalar()i Console. Writeline(result) fia1⊥ onn. Close(i 向 PostgreSQL増加参数很像我们前面的小例。不过,当我们指定 CommandText字符串的时侯,可以省略参数的名字,只使用函数名字就可以 using system using System. Datai using Npgsali / This example uses a function called funcc with the =ollowing definitio //create function funcc(int. 4) returns int8 as / select count(x) from tablea where field int4 = $li //1 anguage'sq1'’; public static class NpgsqlUserManual public static void Main(String[] args) NpgsqlConnection conn Ipgsq-Connection ("Server=127 1, port=5232: User Id-joei Password-secreti Database-joedatai")i co n Cpe (i tr NpgsqlCommand command= new NpgsglCommand("funcc", conn)i conman. CommandType CommandType storedProcedurei command. aranecers Add (new Npgscl Parameter() command ?=.0]. Npgsql DbType- NpgsqlDbType Integer command. aranmesers0] Value 4; object result= command. F. xecutescalar( Console. Writeline(result)i
代码片段和文件信息
相关资源
- 康熙字典mysql
- sql练习工具
- 经典必看的高校学生选课系统SSH+mys
- SQL基础教程第2版.pdf
- MySQL数据库的ODBC驱动安装包32位和64位
- SQLPrompt10.0.11含详细安装说明支持SQL
- MYSQL必知必会---高清版.pdf
- 适用于初学者学习,使用的mysql教程
- SQL Server 2008分析服务从入门到精通S
- MySQL Workbench
- SQL Delta Duo for SQL Server 6.2.2.2066 破解版
- ssm后台管理系统框架(Spring mvc + myb
- dbForge Studio for MySQL v7.1.13 Professional
- SQL2000绿色版win7适用
- mysql-5.6.14.tar.gz linux安装包
- SQLAssistant9 破解版
- mysql-essential-5.1.60-winx64 + 图文教程
- sql toolkit
- 就业管理前台SSM+mysql+tomcat
- MySQL练习数据库
- mysql5.5 免安装版
- SQLPrompt 8.2(带破解工具和步骤) 支
- mycat+mysql+jdbc实现根据手机号尾号分库
- navicat for MySQL破解版,解压安装破解即
- 网上体育用品商城(ssmmysql).rar
- navicat for mysql简体中文绿色破解版
- 2018全国各省市县镇村mysql数据库+exc
- 全国邮政编码sql代码
- SSH+Mysql学生信息管理系统
- E4A编程MYSQL数据库操作
评论
共有 条评论