接上文
對檔案系統的操作:
對於檔案目前內建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) 歡迎您關注我的下一篇文章。