如何创建数据库表类

时间:2014-10-12 07:08:15

标签: c#

我在c#中有一个关于医院系统的项目,其中包含30个儿童表格。

我创建了包含30个以上表格的数据库。

我创建了这样的数据访问:

namespace emamTree
{
    public  class  DBAccess
    {
        public static string connectionString = ConfigurationManager.ConnectionStrings["TreeFinal"].ConnectionString ;

       public SqlCommand Intialize(string query, params SqlParameter[] prmArray)
        {
                SqlConnection cn = new SqlConnection(connectionString);

                SqlCommand cmd = new SqlCommand(query, cn);

                if (!query.Contains(" "))
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;

                if (prmArray.Length > 0)
                    cmd.Parameters.AddRange(prmArray);

                cn.Open();

                return cmd;
        }

        public  int ExcuteNonQuery(string query, params SqlParameter[] prmArray)
        {
            try
            {
                SqlCommand cmd = Intialize(query, prmArray);

                int affectedRows = cmd.ExecuteNonQuery();

                cmd.Connection.Close();

                return affectedRows;
            }
            catch (SqlException ex)
            {
                return ex.Number;
            }
        }

        public object ExcuteScalar(string query, params SqlParameter[] prmArray)
        {
            try
            {
                SqlCommand cmd = Intialize(query, prmArray);

                object value = cmd.ExecuteScalar();

                cmd.Connection.Close();

                return value;
            }
            catch (SqlException ex)
            {
                return ex.Number;
            }
        }

        public  SqlDataReader ExcuteReader(string query, params SqlParameter[] prmArray)
        {
                SqlCommand cmd = Intialize(query, prmArray);

                SqlDataReader sqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                return sqlDataReader;
        }

        public  DataTable ExcuteDataTable(string query, params SqlParameter[] prmArray)
        {
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(query, connectionString);

                if (!query.Contains(" "))
                    sqlDataAdapter.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;

                if (prmArray.Length > 0)
                    sqlDataAdapter.SelectCommand.Parameters.AddRange(prmArray);

                DataTable dt = new DataTable();
                sqlDataAdapter.Fill(dt);

                return dt;
        }

        public  DataSet ExcuteDataSet(string query, params SqlParameter[] prmArray)
        {
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(query, connectionString);

            if (!query.Contains(" "))
                sqlDataAdapter.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;

            if (prmArray.Length > 0)
                sqlDataAdapter.SelectCommand.Parameters.AddRange(prmArray);

            DataSet ds = new DataSet();
            sqlDataAdapter.Fill(ds);

            return ds;
        }
   }
}

在表格患者(表患者)中,我创建了保存方法并且工作正常:

public void Save()
{

     DBAccess db = new DBAccess();
     db.ExcuteNonQuery("insert into Patients  (FileNum,PatientTypeID,EngName,NationalityID,RelegionID) values  (@FileNum,@PatientTypeID,@EngName,@NationalityID,@RelegionID)",
         new SqlParameter("@FileNum", txtFileNum.Text),
         new SqlParameter("@PatientTypeID", txtPatientTypeID.Text),
         new SqlParameter("@EngName", txtEngName.Text),
         new SqlParameter("@NationalityID", txtNationalityID.Text),
         new SqlParameter("@RelegionID", txtRelegionID.Text)
                         );

}

我的问题是如何为数据库中的每个表创建类?

2 个答案:

答案 0 :(得分:1)

使用EntityFramework等现有解决方案。它提供了你需要的所有功能,它将使你的生活比你自己写的更容易(我知道,我已经完成了)。

答案 1 :(得分:1)

创建数据访问层是任何应用程序中非常关键的部分。它必须是一个单独的库,以便您可以在今天和将来的任何项目中使用它。说,明天你希望你的Windows应用程序转换为Web应用程序!您可以添加DAL库并开始使用它。

话虽如此,建立自己的DAL是时间消耗,就像重新发明轮子一样。因此,您需要探索可能满足您要求的可用选项。开箱即用,你有一个名为EntityFramework的ORM。它非常直接使用,但性能明智,它比手写的sql慢。还有另一种流行的ORM叫做NHibernate。它的原始对手Hibernate在java社区中是巨大的,但它有一个非常陡峭的学习曲线。

但我喜欢使用PetaPoco。它充分利用了这两个世界。 ORM + sql。还有其他这样的微型ORM,如Dapper,Massive等。您需要尝试其中的每一个并选择适合您手头应用的那个。

即使选择了符合您账单的框架,您也需要创建抽象,以确保您可以在以后根据需要更改框架。创建一个合适的DAL是一项艰巨的任务,并且我作为开发人员花费了大量时间来做正确的事情。您可以自己探索并找到它。祝你好运。