接上文
对文件系统的操作:
对于文件目前内置3中支持对象:XML、TEXT、CONFIG文件,分别位于类库XMLProvider、TextProvider、SuitConfigProvider中,大家可以自己调用,文件操作大多使用静态操作。
对config文件的操作:
这里还要介绍一SuitConfigProvider类库中的GetItem、GetSection、AppendItem、RemoveElement方法,这几个方法可以快速获得we.config中的Item、节点内容,以及增加、移除节点,例如有个Item信息如下:
<add key="NameABC" value="Data Source=Server IP;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />
使用SuitConfigProvider.GetItem("NameABC ") 语句就可以立即获得该Item内容
SuitConfigProvider类中的方法实现为静态,用户可以直接调用,下表罗列了方法调用说明:
方法名 |
说明 |
static ConfigFileType ConfigType |
指明config类型,默认为web应用程序 |
static string GetItem(string key) |
获得某个” add key”Item的值 |
static Hashtable GetSection(string SectionKey) |
获得某个节点的数据,返回HashTable |
static string GetConnectionString(string key) |
protected internal类型,初始化数据库连接 |
static bool ModifyItem(string key, string value) |
修改一个” add key”Item的值 |
static bool AppendItem(string key, string value) |
添加一个” add key”Item的值 |
static bool RemoveElement(string Key) |
移除” add key”Item |
对文本文件操作:
方法名 |
说明 |
static string GetContent(string Fileinfo) |
2次重载,获得文件内容 |
static bool CreateFile(string FileInfo) |
创建一个文件 |
static bool AppendFile(string str, string FileInfo) |
2次重载,追加文件内容 |
对XML文件操作:
方法名 |
说明 |
static List<Hashtable> GetContent(string FileInfo, string SingleNode) |
2次重载,获得文件内容。传入文件为文件路径和根节点名称,每个节点信息储存在HashTable中,并以List<Hashtable>形式返回 |
static bool CreateFile(string SingleNode, string FileInfo) |
创建一个文件,传入文件为文件路径和根节点名称, |
static bool AppendFile(string SingleNode, string Element, List<Hashtable> Lht, string FileInfo) |
2次重载,追加文件内容,传入文件为根节点内名称、追加节点名称、追加内容结构和追加文件信息。 其中追加内容结构为List<Hashtable>,Hashtable的键名为追加后XML的节点名 |
Web.config对DataProvider的支援信息(选择配置):
键名 |
解释 |
IsLine.Provider.DataProvider.CfgDllName |
反射的数据库工厂DLL位置 |
IsLine.Security.Configuration.TokenKey |
加密使用的种子(字符串) |
IsLine.Data.Configuration.DBConnectString |
数据库连接信息 |
IsLine.Data.Configuration.TextProviderFileInfo |
默认文件位置 |
IsLine.Data.Configuration.SqlServerConnectString |
SQL数据库连接信息 |
IsLine.Data.Configuration.OracleConnectString |
Oracle数据库连接信息 |
关于IsLine.Data.ContainerDefiner命名空间的缓存支援:
这里要提一下该命名空间下ContainerDefine类的缓存支援。
该类共实现 ISqlContainer, IOracleContainer, IFileContainer, IDisposable四个接口,包括了常见的ADO.Net数据对象,例如DataSet、Reader等,利用OracleProvider或SqleProvider中相关方法获得的数据对象,可以直接赋值给ContainerDefine类下的对应对象,例如:
//声明一个容器
ContainerDefine cd = new ContainerDefine(CacheType.HttpRuntime, "IsLineCache");
//将返回的DataSet对象赋值给cd容器
cd.DataSet = new OracleProvider().ExecuteDataSet(sql,CommandType.StoredProcedure,"TestTable",null)
请大家注意,在生命cd时,构造函数有2个参数,第一个是开启HttpRuntime缓存,第二个参数是缓存的名字,这样cd中的DataSet对象被赋值后,会自动缓存,下次在调用cd.DataSet对象时,将自动从缓存中读取,不需要OracleProvider().ExecuteDataSet()方法重新取数据了,目前缓存支持.Net运行时缓存和上下文缓存,当然缓存策略默认是关闭的,当构造函数接收到上述参数时,才会开启缓存。
有关缓存的详细说明,请参看后面的文章“IsLine.HttpContent.HttpContentProvider命名空间系列”
DataProvider没介绍的内容还有很多,这里就不一一介绍了,也许以后有时间Aicken还会继续写完整的。
附 DataProvider Database方法大全:
方法/字段名 |
功能 |
类型 |
ExecuteNonQuery(string cmdText) |
执行传入的sql语句 |
static int |
ExecuteNonQuery(string cmdText, string connectionKey) |
使用指定连接字符串connectionKey,执行传入的sql语句,connectionKey必须在web.config文件中有值 |
static int |
ExecuteNonQuery(string cmdText, bool IsUsingDBTransaction, CommandType cmdType, params DbParameter[] commandParameters) |
1.IsUsingDBTransaction为是否使用数据库事务。 2.如果cmdType为文本,那么cmdText为sql语句;如果cmdType为存储过程,那么cmdText为存储过程名称 3.如果不需要最后一个参数,则传递null即可 |
static int |
ExecuteNonQuery(string cmdText, string connectionKey, bool IsUsingDBTransaction, CommandType cmdType, params DbParameter[] commandParameters) |
使用指定连接字符串connectionKey,其他说明见方法3 |
static int |
ExecuteNonQuery(string cmdText, DbConnection connection, bool IsUsingDBTransaction, CommandType cmdType, params DbParameter[] commandParameters) |
使用指定DbConnection执行,其他说明见方法3 |
static int |
ExecuteScalar(string cmdText) |
执行传入的sql语句 |
static object |
ExecuteScalar(string cmdText, CommandType cmdType, params DbParameter[] commandParameters) |
其他说明见方法3 |
static object |
ExecuteScalar(string cmdText, string connectionKey, CommandType cmdType, params DbParameter[] commandParameters) |
使用指定DbConnection执行 |
static object |
ExecuteScalar(string cmdText, DbConnection connection, CommandType cmdType, params DbParameter[] commandParameters) |
使用指定DbConnection执行 |
static object |
ExecuteReader(string cmdText) |
执行sql语句,返回DbDataReader。注意,调用此方法后,须调用Dispose()释放资源 |
DbDataReader |
ExecuteReader(string cmdText, CommandType cmdType, params DbParameter[] commandParameters) |
其他说明见方法3 |
DbDataReader |
ExecuteReader(string cmdText, string connectionKey) |
见方法2 |
DbDataReader |
ExecuteReader(string cmdText, CommandType cmdType, string connectionKey, params DbParameter[] commandParameters) |
其他说明见方法3 |
DbDataReader |
ExecuteReader(string cmdText, CommandType cmdType, DbConnection connection, params DbParameter[] commandParameters) |
见方法4 |
DbDataReader |
ExecuteDataAdapter(string cmdText) |
执行sql语句 |
DbDataAdapter |
ExecuteDataAdapter(string cmdText, string connectionKey) |
见方法2 |
DbDataAdapter |
ExecuteDataAdapter(string cmdText, CommandType cmdType, params DbParameter[] commandParameters) |
其他说明见方法3 |
DbDataAdapter |
ExecuteDataAdapter(string cmdText, CommandType cmdType, string connectionKey, params DbParameter[] commandParameters) |
见方法4 |
DbDataAdapter |
ExecuteDataAdapter(string cmdText, CommandType cmdType, DbConnection connection, params DbParameter[] commandParameters) |
见方法4 |
DbDataAdapter |
ExecuteDataSet(string cmdText) |
执行sql语句 |
DataSet |
ExecuteDataSet(string cmdText, string connectionKey, int some) |
使用指定连接字符串connectionKey,其他说明见方法3 |
DataSet |
ExecuteDataSet(string cmdText, CommandType cmdType, string srcTable, string connectionKey, params DbParameter[] commandParameters) |
srcTable为填充表的名子,其他说明见方法3 |
DataSet |
ExecuteDataSet(string cmdText, CommandType cmdType, string srcTable, params DbParameter[] commandParameters) |
其他说明见方法3 |
DataSet |
ExecuteDataSet(string cmdText, string srcTable) |
其他说明见方法3 |
DataSet |
ExecuteDataSet(string cmdText, string srcTable, string connectionKey) |
其他说明见方法3 |
DataSet |
Dispose() |
释放实例中所有成员,包括各种Reader、Adapter、Connection等 |
void |
未完待续
我是李鸣(Aicken) 欢迎您关注我的下一篇文章。