关于npgsqlDataAdapter使用总结
1,当向同一个DataTable前后两次写入数据的情况下,如果第一次执行的Sql语句含有“Distinct”关键词,那么第二次无法向DataTable写入中文数据
关于Oracle数据库学习
1, 在将类型为Date的数据插入数据库时,得使用函数to_date(),如以下例子:
Create table a(f date);
Insert into a values(to_date(‘2010-3-1812:12:12’,’yyyy-mm-ddhh24:mi:ss’));
2, OledbCommand不支持多条sql语句的执行,并且在sql语句后不能包含有”;”,否则运行出错。
3, 每回执行完一条数据插入语句后,都得执行命令”commit”,否则数据写入不成功。
4, 为了连接上Oracle服务器必须安装oracle客户端工具。
5, 在使用Oledb对象时,对于含有类型为lob大对象的字段的表无法使用”select”语句进行查询,得用OracleClient命名空间中的对象获取大对象
关于PostGresql数据库学习
1、数据库配置中的max_connection控制的是能同时接入数据库服务器的客户端的数量,所有用户都受到该限制的影响
2、前后使用了两个不同的连接字符窜,假如前一个设置了pool=true,但是后一个设置了pool=false,那么数据库服务器上的连接池将被取消!
3、假如当前命令是创建表格的命令,那么调用命令对象的“ExcuteNonQuery()”的返回值是-1,而不是大于0的数值!!!!!!!!!
4、在该数据库中提出的表空间概念的作用是代表了一个路径,属于该表空间下的所有东西都会存放到该表空间下;表空间通过命令“tablespace”或是在创建数据库用户的时候加上相关的默认命名空间起作用
5、虽然在创建数据库的时候已经指定默认的数据存放路径,但是可以通过指定表空间的方式来具体处理数据库中不同表格的数据;假如数据库中的某个表格要求较高的性能,可以将表放到代表高性能的存储设备(如固态存储器)的表空间里,假如某个表的数据量很大,但很少进行访问,可以将该表的数据存放到代表慢速的存储设备的表空间中
6、该数据库支持一次执行多条SQL语句,但不支持一次插入多条数据
7、共享同一个连接的多个命令对象在相应的多个线程中的执行,无法并发的执行“读操作”和“写操作”;无法支持并发数据写入;总的来说不支持共享同一个连接多个命令对象的方式的开发。
关于Sqlite数据库学习
1, Sqlite不支持在多个线程之间共享连接(SqliteConnection)和命令对象(SqliteCommand),对同一个文件进行操作。
2, 查询已经存在的表名的语句是:
“Select name from sqlite_master”
3, Sqlite支持直接的时间比较,如语句
“Logintime>’2010-3-1812:12:12’”LoginTime为Date类型的字段
4, Sqlite支持这样的时间字符值,如”2010-03-18 12:01:01”
5,分别建立两个数据库操作对象指向同一份数据库文件在两个独立的线程中完成数据库的操作,虽然文档中说能进行同步,但实际使用时仍然会导致死锁的问题
6、含有聚合函数max()Sql语句虽然没有符合条件的记录,但是仍然会有数据返回
7、假如当前命令是创建表格的命令,那么调用命令对象的“ExcuteNonQuery()”的返回值是0,而不是大于0的数值!!!!!!!!!
8、当开启一个“事务”后,无论在那种情况下,一定要关闭,否则下回无法再启动事务,因为“事务”内部是对文件加锁,独占操作
关于sp_executesql使用
1、sp_executesql是系统内置的存储过程
2、一定程度上sp_executesql可以代替存储过程来触发实际的语句被执行
3、sp_executesql支持替换参数语句中的任何参数,单不支持替换物理表名
4、execute sp_executesql @sqlstring(表示要动态执行的sql语句,该语句内会包含要替换的参数) @parmdefinition(该语句描述了@sqlstring中包含参数的类型信息) @para=外部传入的参数值(该语句的目的在于将当前执行计划内的变量值传递到@sqlstring的执行计划内)
5、
USE AdventureWorks;
GO
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @SalesOrderNumber nvarchar(25);
DECLARE @IntVariable int;
SET @SQLString = N'SELECT @SalesOrderOUT = MAX(SalesOrderNumber)
FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID';
SET @ParmDefinition = N'@CustomerID int,
@SalesOrderOUT nvarchar(25) OUTPUT';
SET @IntVariable = 22276;
EXECUTE sp_executesql
@SQLString
,@ParmDefinition
,@CustomerID = @IntVariable
,@SalesOrderOUT = @SalesOrderNumber OUTPUT;
-- This SELECT statement returns the value of the OUTPUT parameter.
SELECT @SalesOrderNumber;
-- This SELECT statement uses the value of the OUTPUT parameter in
-- the WHERE clause.
SELECT OrderDate, TotalDue
FROM Sales.SalesOrderHeader
WHERE SalesOrderNumber = @SalesOrderNumber;
关于利用数据库自身的机制来实现分页的分析
1、在Sql Server中使用TOP关键字
2、在oracle中使用ROWNUM
3、并且都要求有某个数值型的字段为条件
4、利用数据库自身的机制,在Sql语句这一级上实现分页,不具有跨数据库特性
5、在DataReader的基础上实现分页,可以具有跨数据库性
关于ADO.net连接对象与命令对象的关系
1、一个数据库连接对应一个数据库命令对象,无法为同一个数据库连接创建多个数据库命令对象,否则运行报错
关于数据库分区的作用
1、目的在于充分利用并行IO的性能,从而提高数据库性能
2、可以处理数据量相当大的表,将不同区间的数据放置到不同的文件中,提高查询性能
3、使用到的SQL语句包括“ALTER DATABASE ADD FILE,FILEGROUP”和CREATE PARTITION FUNCTION和CREATE PARTITION SCHEMA
关于数据库索引学习
1、Sql Server里索引分为“聚簇索引Cluster”和“非聚簇索引Non-Cluster”;
2、“聚簇索引”指的是数据物理存储时使用的索引
3、“非聚簇索引”指的是数据逻辑意义上的索引
4、一个物理表只能有一个聚簇索引,所以要慎重使用“聚簇索引”
5、可以建立“组合聚簇索引”,建立的顺序是“先删除已有的聚簇索引(一般是主键)”,再
创建即可。
6、不需要的情况下,尽量不要创建“组合聚簇索引”
7、经常被使用的字段,在创建“组合聚簇索引”时,应该放在最前边