首页 > 开发 > 综合 > 正文

自己写的一套处理数据库的方法

2024-07-21 02:45:02
字体:
来源:转载
供稿:网友
class COperateAcc
    {
        PRivate SqlConnection conn = null;//连接数据库
        private SqlCommand comm = null;//操作数据库sql
        private SqlDataAdapter ada = null;//填充dataset
        private SqlDataReader reader = null;//读取数据库表中的值
        
        //构造函数
        //初始化连接数据库
        public COperateAcc()
        {
            try
            {
                DBCon dbcon = new DBCon();
                conn = dbcon.getConn();


            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                close();
            }
        }
        //读完数据库值关闭所有连接
        //通过判断看所有连接是否关闭,没关闭的情况关闭
        public void close()
        {
            if (reader != null)
            {
                reader.Close();
            }
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
        }
        //功能:查询sql语句
        public SqlDataReader executeReader(string str_SqlString)
        {
            try
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                comm = new SqlCommand();
                comm.CommandText = str_SqlString;
                comm.Connection = conn;
                conn.Open();
                reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception e)
            {
                throw e;
            }
            return reader;
           
        }

        //功能:获得分页的行数
        public int getPageRecord(string str_SqlString)
        {

            int count;
            try
            {

                comm = new SqlCommand();
                comm.CommandText = str_SqlString;
                comm.Connection = conn;
                conn.Open();
                count = (int)comm.ExecuteScalar();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                close();
            }
            return count;
        }
        //功能:把从数据库表中得到的数据保存到客户端的一张表中
        //返回:dataset 已一张表的形式保存到dataset
        //参数:str_SqlString 查询的sql语句
        public DataSet getDataSet(string str_SqlString)
        {
            DataSet ds = new DataSet();
            try
            {
                ada = new SqlDataAdapter(str_SqlString, conn);
                ada.Fill(ds);
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                close();
            }
            return ds;
        }
        //功能:把从数据库表中得到的数据保存到客户端的一张表中
        //返回:datatable 已一张表的形式保存到datatable
        //参数:str_SqlString 查询的sql语句
        public DataTable getDataTable(string str_SqlString)
        {
            DataTable dt = new DataTable();
            try
            {
                ada = new SqlDataAdapter(str_SqlString, conn);
                ada.Fill(dt);
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                close();
            }
            return dt;
        }

        //功能:操作数据库中的表 添加,删除,更新
        //返回:int 受影响的行数总数。
        //参数:str_SqlString sql语句
        public int executeSql(string str_SqlString)
        {
            int int_Num = 0;
            try
            {
                comm = new SqlCommand();
                comm.CommandText = str_SqlString;
                comm.Connection = conn;
                conn.Open();
                int_Num = comm.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                close();
            }
            return int_Num;
        }
        //功能:生成数据库中最大的唯一编号(挂失表等,总共19位 str_Szf+日期+四位数字)
        //返回:string 最大值
        //参数:@par1:str_Szf 用户自定义字符串 (前两位为用户自己规定+后五位位用户登录时的单位编号)
        //     :@par2:str_Id 数据库唯一编号字段名
        //      :@par3:str_TableName 数据库表名
        public string getMaxID()
        {
            string str_MaxNum = "";
            try
            {
                string sql = "select max(OId) from OrderRegister where  OId like  '%' ";
                reader = this.executeReader(sql);
                reader.Read();
                if (reader[0].ToString().Equals(""))
                {
                    str_MaxNum = this.getDateZh(this.getDate()) + "01";
                }
                else
                {
                    if (reader[0].ToString().Substring(0, 8).Equals(this.getDateZh(this.getDate())))
                    {
                        str_MaxNum = this.getDateZh(this.getDate()) + Convert.ToString((Convert.ToInt32(reader[0].ToString().Substring(8, 2)) + 1)).PadLeft(2, '0');
                    }
                    else
                    {
                        str_MaxNum = this.getDateZh(this.getDate()) + "01";
                    }
                }

            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                close();
            }
            return str_MaxNum;
        }
        //得到当天日期(年+月+日)
        public string getDate()
        {
            string date = Convert.ToString(DateTime.Now).Substring(0, Convert.ToString(DateTime.Now).IndexOf(' '));
            return date;
        }
        //转换日期形式
        public string getDateZh(string str_DateValue)
        {
            string str_DValue;
            if (str_DateValue.Length == 8)//八位 例如2008-1-1
            {
                str_DValue = str_DateValue.Substring(0, 4) + "0" + str_DateValue.Substring(5, 1) + "0" + str_DateValue.Substring(7, 1);
            }
            else if (Convert.ToInt32(str_DateValue.Length) == 9)//九位 分别为:2008-11-6,2008-2-12
            {
                if (str_DateValue.Substring(6, 1) == "-")
                {
                    str_DValue = str_DateValue.Substring(0, 4) + "0" + str_DateValue.Substring(5, 1) + str_DateValue.Substring(7, 2);
                }
                else
                {
                    str_DValue = str_DateValue.Substring(0, 4) + str_DateValue.Substring(5, 2) + "0" + str_DateValue.Substring(8, 1);
                }
            }
            else//十位 例如:2008-11-23
            {
                str_DValue = str_DateValue.Substring(0, 4) + str_DateValue.Substring(5, 2) + str_DateValue.Substring(8, 2);
            }
            return str_DValue;
        }

       
    }

如果是access数据库 将SqlConnection  SqlCommand 等换成 OleDbConnection OleDbCommand 就可以了。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yangliuyilovexi/archive/2009/12/17/5027382.aspx
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表