本文總結項目中數據庫操作相關的一些經驗教訓,特別是最近一周以來的。項目集成時,數據庫出過幾次莫名奇妙的錯誤,而我自己,也因為數據庫表設計不當,而屢嘗苦果。
一、數據讀取
常用兩種方法從數據庫讀取數據。1. 直接讀取。使用SqlConnection建立一個數據庫連接con,將con和查詢語句select封裝到一個SqlCommand對象command中,并使用SqlAdapter對這個command進行包裝,包裝后得到適配器對象da,使用da.fill()函數,將查詢結果讀到DataSet中。
2. 使用存儲過程。將查詢語句保存到存儲過程中,以后每次調用數據庫中的存儲過程。本質上,這種方式和1相同,但將cmd.CommandType = CommandType.StoredProcedure,然后SqlAdapter將會去數據庫中查找相應的存儲過程,而不是1中的直接使用select查詢語句。
對于第2種方式,可以將數據讀到DataSet中,然后再對DataSet直接操作。或者使用dataReader = cmd.ExecuteReader();將數據對到DataReader中,然后再從DataReader將數據保存到業務類中。
二、表、視圖、存儲過程
1. 在設計表的時,應考慮完備。比如備用字段、字段長度等因素。
2. 視圖并不能帶來效率的改善,但可以很好地讓邏輯更清晰。
3. 存儲過程不應該存在調用關系。否在在集成時,極易出錯。
4. 盡量將數據庫連接參數寫道web.config里,而不是直接寫在程序中。
源代碼1
public static int GetQueryList(string strQuery,out DataSet details)
{
SqlConnection con = null;
string select = strQuery;
details = new DataSet();
try
{
if (con == null)
{
con = new SqlConnection(ConfigurationSettings.AppSettings["HrsConnectionString"]);
con.Open();
}
SqlCommand cmd = new SqlCommand(select, con);;
DataSet dsTemp = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dsTemp);
details = dsTemp;
}
catch(Exception e)
{
ComLog.ErrSet("","","EplCheckHistory.cs[GetQueryList()]",e.TargetSite.ToString() + e.Message);
details = null;
return 3;
}
finally
{
if (con != null)
{
con.Close();
con.Dispose();
con = null;
}
}
return 0;
}
類別:項目回顧 查看評論文章來源:
http://hi.baidu.com/hawkingliu/blog/item/b42a9e2b757e17ffe6cd40d4.html
posted on 2008-04-21 22:01
ronliu 閱讀(161)
評論(0) 編輯 收藏 引用