转换成UTF-8码制时,只需要根据下面的规则转换即可
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
比如,如果是三字节的字符,转成UTF-8时,首先,右移12,因为根据规则:1110xxxx 10xxxxxx 10xxxxxx,后面两个字节占原来字符中的位数是6+6位,要获取第一个字节占的原来字符的位数,需要右移12,然后和0x0F进行“&”操作,获取低四位,然后和0xE0进行“|”操作,来将高四位置为1110,其他同理即可
在C#中直接利用Encoding.UTF8这个属性即可进行相似的操作
使用SQL2000时,直接在没有表的前提下,右键选择了创建新表,会出现错误:本单元运行出现错误,建议重启MMC,解决办法是用工具栏中的新建表,或者在有表的前提下,选择存在的表,然后右键新建表
ADO
主要的接口有IDbConnection;IDataParameter;IDbCommand;可以利用多态性编程
连接对象Connection不会隐式的关闭,需要进行显示关闭(调用close函数)。
Command类的执行方法:1、ExecuteReader和ExecuteScalar以及ExecuteNonQuery,这三个函数分别表示:返回一个继承之IDataReader接口的流对象、返回一个单独的值,类似COUNT、SUM等聚合函数、返回命令所影响的行数
对于每个关联的 SqlConnection,一次只能打开一个SqlDataReader,在第一个关闭之前,打开另一个的任何尝试都将失败。类似地,在使用SqlDataReader 时,关联的SqlConnection 正忙于为它提供服务,直到调用 Close 时为止
SqlDataReader 的默认位置在第一条记录前面。因此,必须调用Read 来开始访问任何数据。并且DataReader是只向前、只读的数据流,Command.ExecuteRead,将返回一个DataReader对象,可以访问数据流中的每一行的数据,通过Read函数
SqlDataReader的Item属性,在VS2008上好像没有,尽管在MSDN上说明有
如果Command命令返回一个或多个输出参数,那么在DataRead对象关闭前,其是不能使用的
DataAdapter是数据源适配器,是为DataSet设计的,所以,它能够从数据源获取数据,并且可以填充DataTable和约束,另外它还可以维护DataTable之间的关系
TableMapping属性可以将DataSet中的多个记录集(即:虚表)关联成有效的表名,方便以后访问,默认的DataSet记录集的表名是Table、Table1、Table2等,不过映射时,必须在DataAdapter调用Fill函数,填充DataSet之前,进行映射,否则无效。例子:
DataSet ds = newDataSet();
SqlDataAdapter da = newSqlDataAdapter(command);
da.TableMappings.Add("Table","NameTable");
da.Fill(ds);
然后就可以通过ds.Tables["NameTable"]进行访问了
DataRelation对象也用于创键和强制下列约束:
1、唯一约束,它保证表中的列不包含重复内容。
2、外键约束,可用来维护数据集中的父表和子表之间的引用完整性。
通常,只有从服务器发出的信息性消息和警告消息才会触发 InfoMessage 事件。但是,真正的错误发生时,启动服务器操作的ExecuteNonQuery 或 ExecuteReader 方法将暂停执行,并引发异常。
将错误级别小于17大于10的异常设置成信息性消息(转换成信息性消息可以让程序不中断执行)的方法:如果无论服务器生成任何错误都要继续处理命令中的语句的其他部分,请将SqlConnection的 FireInfoMessageEventOnUserErrors 属性设置为true。 这样做会使连接对错误触发 InfoMessage 事件,而不是引发异常并中断处理。客户端应用程序可以处理此事件并对错误情况做出响应。
错误级别大于17时,必须作为异常处理(意味着程序要中断)
SqlCommand.ExecuteReader方法的作用,MSDN的解释是:将 CommandText发送到Connection 并生成一个 SqlDataReader。自己感觉就是将CommandText送到链接类中,进行执行CommandText中的操作
ExecuteScalar方法的作用,MSDN的解释:执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。
ExecuteNonQuery 方法的作用,MSDN:对连接对象执行 SQL语句。自己理解就是执行CommandText中的SQL语句
存储过程中输出的消息,通过InfoMessage事件中的SqlInfoMessageEventArgs参数中的Message属性返回
如果没有显式的关闭连接,那么虽然连接对象可能会被垃圾收集器收集,但是实际的连接处于打开状态,并且不会返回到连接池,所以就会在连接池中占位置,有可能造成连接池饱和,继续请求连接时发生错误
调用Dispose函数和Close函数的区别,Dispose函数清空连接字符串
Dispose internally calls Close. In addition, Dispose clears theconnection string.
Command类是命令类,用于通过一个连接在数据源上执行命令,其结合ExecuteXXXX(如ExecuteReader)函数,来执行命令。
Command中的ExecuteNonQuery函数执行更新、插入和删除等命令,返回响应的值,如果是查询语句则会返回-1