Spring.net + FluorineFx 項目搭建 之 四、Spring.net數據庫調用寫法

四、數據庫調用

4.1 Dao類中的方法

4.1.1新增數據寫法

新增一個人員,傳入數據爲:人員姓名,所屬機構key;返回新增人員後的key。

/// <summary>
/// 新建人員,返回key
/// </summary>
/// <returns></returns>
public decimal CreatPersonForPersonName(String personName, decimal unitKey)
{
    return AdoTemplate.Execute<decimal>
        (
             delegate(IDbDataAdapter dataAdapter)
             {

                 if (dataAdapter is OracleDataAdapter)
                 {
                     OracleCommand commandToUse = (dataAdapter.SelectCommand as OracleCommand);
                     commandToUse.CommandText = CommandSQL.CreatPersonForPersonName;
                     commandToUse.BindByName = true;
                     commandToUse.Parameters.Add(":PERSON_NAME", OracleDbType.NVarchar2, ParameterDirection.Input).Value = personName;
                     commandToUse.Parameters.Add(":UNIT_KEY", OracleDbType.Decimal, ParameterDirection.Input).Value = unitKey;

                     commandToUse.Parameters.Add(":PERSON_KEY", OracleDbType.Decimal, ParameterDirection.Output);
                     if (commandToUse.ExecuteNonQuery() != 1)
                     {
                         throw new Exception("Dao內部出現錯誤");
                     }

                     return commandToUse.Parameters[":PERSON_KEY"].Value.ToDecimal(); ;
                 }
                 else
                 {
                     throw new Exception("Dao內部出現錯誤");
                 }
             }
        );
}

 

/* Formatted on 2010-5-20 11:22:02 (QP5 v5.114.809.3010) */
INSERT INTO PERSON_TBL PT (PT.PERSON_KEY,
                           PT.PERSON_NAME,
                           PT.PERSON_STATE,
                           PT.UNIT_KEY)
   VALUES   (GLOBAL_SEQUENCE.NEXTVAL,
             :PERSON_NAME,
             1,
             :UNIT_KEY)
RETURNING   PT.PERSON_KEY      INTO   :PERSON_KEY

 
 

4.1.2查詢數據寫法

/// <summary>
/// 得到person對象,根據key
/// </summary>
/// <param name="personKey"></param>
/// <returns></returns>
public Person GetPersonForPersonKey(decimal personKey)
{
    DataTable dataTable = AdoTemplate.Execute<DataTable>
        (
            delegate(IDbDataAdapter dataAdapter)
            {
                if (dataAdapter is OracleDataAdapter)
                {
                    OracleCommand commandToUse = (dataAdapter.SelectCommand as OracleCommand);
                    commandToUse.CommandText = CommandSQL.GetPersonForPersonKey;
                    commandToUse.BindByName = true;
                    commandToUse.Parameters.Add(":PERSON_KEY", OracleDbType.Decimal, ParameterDirection.Input).Value = personKey;
                    DataSet dataSet = new DataSet();
                    dataAdapter.Fill(dataSet);
                    return dataSet.Tables[0];
                }
                else
                {
                    throw new Exception("Dao內部出現錯誤");
                }
            }
        );
    return (from dataRow in dataTable.AsEnumerable()
            select new Person
            {
                PersonKey = dataRow.Field<decimal?>("PERSON_KEY"),
                PersonName = dataRow.Field<string>("PERSON_NAME").toNullString(),
                PersonNickname = dataRow.Field<string>("PERSON_NICKNAME").toNullString(),
                PersonPhoto = dataRow.Field<byte[]>("PERSON_PHOTO").Base64Encode(),
                PersonState = dataRow.Field<decimal?>("PERSON_STATE"),
                UnitKey = dataRow.Field<decimal?>("UNIT_KEY"),
            }).FirstOrDefault();
}

 

/* Formatted on 2010-5-24 16:53:30 (QP5 v5.114.809.3010) */
SELECT   PT.PERSON_KEY,
         PT.PERSON_NAME,
         PT.PERSON_NICKNAME,
         PT.PERSON_PHOTO,
         PT.PERSON_STATE,
         PT.UNIT_KEY
  FROM   PERSON_TBL PT
 WHERE   PT.PERSON_KEY  = :PERSON_KEY
 

 

4.1.3修改數據寫法

/// <summary>
/// 更新用戶基本信息
/// </summary>
/// <param name="personKey"></param>
/// <param name="personName"></param>
/// <param name="personNickname"></param>
/// <param name="personState"></param>
/// <param name="personPhoto"></param>
/// <param name="unitKey"></param>
/// <returns></returns>
public Boolean UpdatePersonForPersonKey(decimal personKey, String personName, String personNickname, decimal? personState, byte[] personPhoto, decimal? unitKey)
{
    return AdoTemplate.Execute<Boolean>
        (
             delegate(IDbDataAdapter dataAdapter)
             {
                 if (dataAdapter is OracleDataAdapter)
                 {
                     OracleCommand commandToUse = (dataAdapter.SelectCommand as OracleCommand);
                     commandToUse.CommandText = CommandSQL.UpdatePersonForKey;
                     commandToUse.BindByName = true;
                     commandToUse.Parameters.Add(":PERSON_KEY", OracleDbType.Decimal, ParameterDirection.Input).Value = personKey;
                     commandToUse.Parameters.Add(":PERSON_NAME", OracleDbType.NVarchar2, ParameterDirection.Input).Value = personName;
                     commandToUse.Parameters.Add(":PERSON_NICKNAME", OracleDbType.NVarchar2, ParameterDirection.Input).Value = personNickname;
                     commandToUse.Parameters.Add(":PERSON_STATE", OracleDbType.Decimal, ParameterDirection.Input).Value = personState;
                     commandToUse.Parameters.Add(":PERSON_PHOTO", OracleDbType.Blob, ParameterDirection.Input).Value = personPhoto;
                     commandToUse.Parameters.Add(":UNIT_KEY", OracleDbType.Decimal, ParameterDirection.Input).Value = unitKey;

                     if (commandToUse.ExecuteNonQuery() != 1)
                     {
                         throw new Exception("Dao內部出現錯誤");
                     }
                     return true;
                 }
                 else
                 {
                     throw new Exception("Dao內部出現錯誤");
                 }
             }
        );
}

 

/* Formatted on 2010-5-6 13:28:26 (QP5 v5.114.809.3010) */
UPDATE   PERSON_TBL PT
   SET   PT.PERSON_NAME = :PERSON_NAME,
         PT.PERSON_NICKNAME = :PERSON_NICKNAME,
         PT.PERSON_STATE = :PERSON_STATE,
         PT.PERSON_PHOTO = :PERSON_PHOTO,
         PT.UNIT_KEY = :UNIT_KEY
 WHERE   PT.PERSON_KEY = :PERSON_KEY

 

4.1.4刪除數據寫法

public Boolean DeleteUserForPersonKey(decimal personKey)
{
    return AdoTemplate.Execute<Boolean>
        (
             delegate(IDbDataAdapter dataAdapter)
             {

                 if (dataAdapter is OracleDataAdapter)
                 {
                     OracleCommand commandToUse = (dataAdapter.SelectCommand as OracleCommand);
                     commandToUse.CommandText = CommandSQL.DeleteUserForPersonKey;
                     commandToUse.BindByName = true;
                     commandToUse.Parameters.Add(":PERSON_KEY", OracleDbType.Decimal, ParameterDirection.Input).Value = personKey;

                     if (commandToUse.ExecuteNonQuery() != 1)
                     {
                         throw new Exception("Dao內部出現錯誤");
                     }

                     return true;
                 }
                 else
                 {
                     throw new Exception("Dao內部出現錯誤");
                 }
             }
        );
}

 

DELETE   USER_TBL UT
 WHERE   UT.PERSON_KEY = :PERSON_KEY

 
 

發佈了11 篇原創文章 · 獲贊 1 · 訪問量 3368
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章