随笔-18  评论-11  文章-12  trackbacks-0

      本文总结项目中数据库操作相关的一些经验教训,特别是最近一周以来的。项目集成时,数据库出过几次莫名奇妙的错误,而我自己,也因为数据库表设计不当,而屡尝苦果。

一、数据读取

      常用两种方法从数据库读取数据。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 阅读(148) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理