資料庫操作(1.0.0.1)(續) (轉)
:namespace prefix = o ns = "urn:schemas--com::office" />
datamodel.xml
* FROM Bank_Library WHERE bank_id = @bankId
SELECT * FROM Bank_Library WHERE bank_id = 1
SELECT * FROM Account
說明:
1. DataModel:根接點。
2. Command:命令接點,代表一條命令語句;id命令編號,用來對命令進行編號,中將不使用;name命令的名稱,程式中透過這個名稱來;type命令的型別,有兩種取值(command,produce),代表是SQL
語句還是過程。
3. CommandString:命令的SQL
語句或儲存過程的名稱,直接填入可以在查詢分析器中執行的SQL
語句就可以。
4. Param:引數結點,每個結點代表一個引數,id引數編號;name引數名稱,必須和上面結點中引用的一致;default引數的預設值;type引數的資料型別;size引數的資料長度;這些屬性的設定都應該和中的欄位一致。
配置檔案tableDefine.xml
說明:
1. TableDefine:根結點。
2. Table:表結點,代表一個資料庫表。alias表的別名,程式中引用;name表的真實名稱,和資料庫中的表名一致。
3. Column:列結點,代表一列的定義。alias列的別名,程式中引用;name列的真實名稱,和資料庫中的列名一致;datatype列定義的資料型別;length列定義的長度;nullflag列是否允許為空的標誌;primarykey主鍵標誌;foreignkey外來鍵標誌;default預設值;autoadd自增標誌。
4. 資料庫中表的定義將透過程式直接匯入這個配置檔案中,至於表和表的關係,以後我會加上的。
Iase介面
此介面類定義了資料庫操作所公共的介面,所有針對不同的資料庫實現的資料庫操作類都應該遵從於這個介面,並且工廠(Factory
)的應用,使得上層呼叫的時候,可以不需要考慮下面使用的特定的資料庫引擎。
目前:SQL
查詢
語句是事先寫定了放於配置檔案datamodel.xml
中的,引數陣列中引數的順序和配置檔案中引數的順序保持一致。
我將進一步修改,把簡單的查詢語句自動生成,而不需要事先寫入XML
檔案。
string GetSingle(string sqlStr, string [] vals);
Hashtable GetSingleRow(string sqlStr, string [] vals);
ArrayList GetMultiRow(string sqlStr, string [] vals);
void CreateItem(string itemName, string [] colsValueArray);
void ModifyItem(string itemName, string itemId, string [] colsNameArray, string [] colsValueArray);
void DeleteItem(string itemName, string itemId);
* GetSingle():根據傳進去的資料庫操作的名稱(定義於配置檔案中)、引數陣列,取回一個字串型別的單值,比如:根據姓名取使用者的地址。
* GetSingleRow():根據傳進去的資料庫操作的名稱(定義於配置檔案中)、引數陣列,取回資料庫表中的一行多列,結果按照欄位名、值的對應關係,存放於Hashtable中,方便於使用。比如:根據使用者姓名取出使用者的資訊,當有多個行返回的時候,取到資料集的第一行。
* GetMultiRow():根據傳進去的資料庫操作的名稱(定義於配置檔案中)、引數陣列,取回資料庫表中的多行多列,取回的是一個陣列,陣列中的每個元素都是一個Hashtable,每個Hashtable儲存資料庫表中的一行多列。比如:取出1979年出生的所有的使用者列表,每個使用者存在於一個Hashtable中,取到的陣列中包含了所有符合條件的所有使用者列表。
* CreateItem():根據傳進去的表名、要插入表的值陣列,生成INSERT
語句,資料庫插入操作。注意:表明是一個別名,定義於配置檔案中,並不是真實的資料庫表名,中間有個隱射關係,這樣可以保證在資料庫表名改變的情況下不需要改變程式。列名也是同樣的處理;另外,要插入的值必須和配置檔案tableDefine.xml
中定義的欄位順序一致,否則生成的語句會出錯。比如:向使用者表中插入一個新使用者。
* ModifyItem():根據傳進去的表名、主鍵的值、要修改表的欄位陣列、值陣列,其中欄位陣列和值陣列必須一一對應,然後自動生成UPDATE
語句。比如:根據使用者名稱,修改使用者表中使用者的地址、電話。
* DeleteItem():根據傳進去的表名、主鍵的值,自動生成DELETE
語句。比如:根據使用者名稱刪除使用者資料。
SqlDBase類
實現了IDBase介面,公共方法的實現和上面介紹的介面類一致,值得說明的是這個類提供了兩個構造器。
public SqlDBase(string conName)
public SqlDBase()
使用預設的資料庫,可以使用第二個構造器,如果使用其他的資料庫連線,則使用第一個構造器,引數和配置檔案SystemConfig.xml
中資料庫連線的名稱對應,從而指不同的連線。
DbaseFactory類
這是一個工廠類,實現了工廠模式,目的是為了上層呼叫的時候,不需要關心使用的那個資料庫操作類,這取決於配置檔案中的設定。
public static IDBase GetDBaseUtility()
public static IDBase GetDBaseUtility(string conName)
{
IDBase myDBaseUtil = null;
if(Constant.Data_Base.Equals("SQLSERVER2000"))
{
myDBaseUtil = new SqlDBase(conName);
}
return myDBaseUtil;
}
兩個方法基本一致,引數只是為了指明使用哪個資料庫連線。
工廠Factory模式
根據配置檔案中指明的資料庫,返回相應的操作類,在這裡,如果配置中指定的資料庫為“SQLSERVER2000”,則返回SqlDBase類。
結束語
與資料庫相關的類的介紹就到這裡了,寫的過程中,自己都覺得很多地方沒有寫清楚,有興趣的朋友看了原始碼應該可以完全明白的,只是原始碼到目前還沒有完全完成,等完成以後一定發給大家,希望大家看了以後能給小弟一點指定,謝謝各位的關注。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-963792/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ABAP資料庫操作(轉)資料庫
- 資料庫結構操作 (轉)資料庫
- (轉)使用Xtrabackup備份MySQL資料庫(續)MySql資料庫
- Oracle資料庫日期格式轉換操作Oracle資料庫
- 常用操作 / 資料庫操作資料庫
- 資料庫操作資料庫
- 資料庫操作·資料庫
- 轉發:C#操作SQL Server資料庫C#SQLServer資料庫
- 使用元件封裝資料庫操作(二) (轉)元件封裝資料庫
- 使用元件封裝資料庫操作(一) (轉)元件封裝資料庫
- 【Falsk 使用資料庫】---- 資料庫基本操作資料庫
- 在C、JAVA、PHP中操作postgreSql資料庫 (轉)JavaPHPSQL資料庫
- MongoDB 資料庫操作MongoDB資料庫
- mongodb資料庫操作MongoDB資料庫
- MySQL 資料庫操作MySql資料庫
- laravel 資料庫操作Laravel資料庫
- django資料庫操作Django資料庫
- Ecos 資料庫操作資料庫
- 資料庫基本操作資料庫
- Oracle備份與恢復系列(四)複製資料庫 續 手工複製資料庫的最簡操作Oracle資料庫
- 不用JDBC:ODBC bridge直接操作Access 資料庫 (轉)JDBC資料庫
- C# BETA2中操作ACCESS資料庫 (轉)C#資料庫
- 入侵oracle資料庫時常用的操作命令整理(轉)Oracle資料庫
- 使用C#語言操作ADO資料庫 (轉)C#資料庫
- 值得白嫖的資料庫常用操作語句彙總(資料庫、資料表、資料操作)資料庫
- 資料庫——基礎(資料庫操作,表格操作)——增加高階查詢資料庫
- java語言操作Oracle資料庫中的CLOB資料型別 (轉)JavaOracle資料庫資料型別
- Mysql資料庫操作命令MySql資料庫
- Laravel 資料庫基本操作Laravel資料庫
- django操作多資料庫Django資料庫
- Go之資料庫操作Go資料庫
- PHP操作MySQL資料庫PHPMySql資料庫
- postgresql 資料庫基本操作SQL資料庫
- MySQL資料庫常用操作MySql資料庫
- 【Java】操作Sqlite資料庫JavaSQLite資料庫
- 【Java】操作mysql資料庫JavaMySql資料庫
- 資料庫操作語句資料庫
- 資料庫操作指令(一)資料庫