本文总结项目中数据库操作相关的一些经验教训,特别是最近一周以来的。项目集成时,数据库出过几次莫名奇妙的错误,而我自己,也因为数据库表设计不当,而屡尝苦果。
一、数据读取
常用两种方法从数据库读取数据。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 阅读(154)
评论(0) 编辑 收藏 引用