地产项目管理数据库操作类

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace Build
{
   class DataBase
   {
       public SqlConnection getConnection()
       {
           return new SqlConnection("server=.;uid=sa;pwd=111111;database=build");
       }
       SqlConnection con = null;
       /// <summary>
       /// 执行SQL语句
       /// </summary>
       /// <param name="sql">sql语句</param>
       /// <returns>返回一具体值</returns>
       public object QueryScalar(string sql)
       {
           Open();//打开数据库连接
           object result = null;
           try
           {
               using (SqlCommand cmd = new SqlCommand(sql, con))
               {
                   result = cmd.ExecuteScalar();
                   return result;
               }
           }
           catch
           {
               return null;
           }
       }
       /// <summary>
       /// 执行SQL语句
       /// </summary>
       /// <param name="sql">SQL语句</param>
       /// <param name="prams">参数</param>
       /// <returns>返回具体值</returns>
       private object QueryScalar(string sql,SqlParameter[] prams)
       {
           Open();
           object result = null;
           try
           {
               using (SqlCommand cmd = CreateCommandSql(sql, prams))
               {
                   result = cmd.ExecuteScalar();
                   return result;
               }
           }
           catch
           {
               return null;
           }
       }
       /// <summary>
       /// 创建一个SqlCommand对象,用来构建SQL语句
       /// </summary>
       /// <param name="sql">SQL语句</param>
       /// <param name="prams">SQL需要的参数</param>
       /// <returns>返回带参数的SQL语句</returns>
       public SqlCommand CreateCommandSql(string sql, SqlParameter[] prams)
       {
           Open();
           SqlCommand cmd = new SqlCommand(sql, con);
           if (prams != null)
           {
               foreach (SqlParameter parameter in prams)
               {
                   cmd.Parameters.Add(parameter);
               }
           }
           return cmd;
       }
       //打开数据库连接
       private void Open()
       {
           if (con == null)
           {
               con = new SqlConnection("server=.;uid=sa;pwd=111111;database=build");
           }
           if (con.State == ConnectionState.Closed)
           {
               con.Open();
           }
       }
       /// <summary>
       /// 执行SQL语句
       /// </summary>
       /// <returns>返回DataTable</returns>
       public DataTable Query(string sql)
       {
           Open();
           using (SqlDataAdapter sqlda = new SqlDataAdapter(sql, con))
           {
               using (DataTable dt = new DataTable())
               {
                   sqlda.Fill(dt);
                   return dt;
               }
           }
       }
       /// <summary>
       /// 执行SQL语句
       /// </summary>
       /// <param name="sql">SQL语句</param>
       /// <param name="prams">参数</param>
       /// <returns>返回DataTable</returns>
       public DataTable Query(string sql, SqlParameter[] prams)
       {
           SqlCommand cmd = CreateCommandSql(sql,prams);
           using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
           {
               using (DataTable dt = new DataTable())
               {
                   sda.Fill(dt);
                   return dt;
               }
           }
       }
       /// <summary>
       /// 执行SQL语句,返回受影响的行数
       /// </summary>
       /// <param name="sql">SQL语句</param>
       /// <returns>受影响的行数</returns>
       public int RunSql(string sql)
       {
           int results = -1;
           try
           {
               Open();
               using (SqlCommand cmd = new SqlCommand(sql, con))
               {
                   results = cmd.ExecuteNonQuery();
                   con.Close();
                   return results;
               }
           }
           catch
           {
               return 0;
           }
       }
       /// <summary>
       /// 执行SQL语句,返回受影响的行数
       /// </summary>
       /// <param name="sql">SQL语句</param>
       /// <param name="prams">SQL语句所需要的参数</param>
       /// <returns>受影响的行数</returns>
       public int RunSql(string sql, SqlParameter[] prams)
       {
           int results = -1;
           try
           {
               using (SqlCommand cmd = CreateCommandSql(sql, prams))
               {
                   results = cmd.ExecuteNonQuery();
                   this.Close();
                   return results;
               }
           }
           catch
           {
               return 0;
           }
       }
       //关闭数据库连接
       public void Close()
       {            
           if (con != null)
           {
               con.Close();
           }
       }
       /// <summary>
       /// 执行SQL语句,返回一个SqlDataReader
       /// </summary>
       /// <param name="sql"></param>
       /// <param name="dataReader"></param>
       public void RunSql(string sql, out SqlDataReader dataReader)
       {
           SqlCommand cmd = CreateCommandSql(sql, null);
           dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
       }
       public void RunSql(string sql, SqlParameter[] prams, out SqlDataReader dataReader)
       {
           SqlCommand cmd = CreateCommandSql(sql, prams);
           dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
       }
       /// <summary>
       /// 执行存储过程
       /// </summary>
       /// <returns></returns>
       public int RunProc(string procName)
       {
           SqlCommand cmd = CreateCommand(procName,null);
           cmd.ExecuteNonQuery();
           this.Close();
           return (int)cmd.Parameters["ReturnValue"].Value;
       }
       /// <summary>
       /// 执行存储过程,返回受影响的行数
       /// </summary>
       /// <param name="procName">存储过程名字</param>
       /// <param name="prams">存储过程的参数</param>
       /// <returns>受影响的行数</returns>
       public int RunProc(string procName, SqlParameter[] prams)
       {
           SqlCommand cmd = CreateCommand(procName, prams);
           cmd.ExecuteNonQuery();
           this.Close();
           return (int)cmd.Parameters["ReturnValue"].Value;
       }
       /// <summary>
       /// 执行存储过程,返回SqlDataReader
       /// </summary>
       /// <param name="procName">存储过程名字</param>
       /// <param name="dataReader">返回SqlDataReader</param>
       public void RunProc(string procName,out SqlDataReader dataReader)
       {
           SqlCommand cmd = CreateCommand(procName, null);
           dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
       }
       public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
       {
           SqlCommand cmd = CreateCommand(procName,prams);
           dataReader = cmd.ExecuteReader();
       }
       /// <summary>
       /// 创建一个SqlCommand对象,用来执行存储过程
       /// </summary>
       /// <param name="procName">存储过程名称</param>
       /// <param name="prams">参数</param>
       /// <returns>SqlCommand对象</returns>
       private SqlCommand CreateCommand(string procName,SqlParameter[] prams)
       {
           Open();
           SqlCommand cmd = new SqlCommand(procName,con);
           cmd.CommandType = CommandType.StoredProcedure;
           if (prams != null)
           {
               foreach (SqlParameter parameter in prams)
               {
                   cmd.Parameters.Add(parameter);
               }
           }
           cmd.Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));
           return cmd;
       }
       /// <summary>
       /// 对DateTime类型做限制
       /// </summary>        
       /// <returns></returns>
       public SqlParameter MakeInParamDate(string paramName, SqlDbType dbType, int size, DateTime value)
       {
           if (value.ToShortDateString() == "0001-1-1")
           {
               return MakeParam(paramName, dbType, size, ParameterDirection.Input, System.DBNull.Value);
           }
           else
           {
               return MakeParam(paramName,dbType,size,ParameterDirection.Input,value);
           }
       }
       public SqlParameter MakeParam(string paramName,SqlDbType dbType,int size,ParameterDirection direction,object value)
       {
           SqlParameter param;
           if (size > 0)
           {
               param=new SqlParameter(paramName,dbType,size);
           }
           else
           {
               param = new SqlParameter(paramName,dbType);
           }
           param.Direction = direction;
           if (!(direction == ParameterDirection.Output && value == null))
           {
               param.Value = value;
           }
           return param;
       }
       /// <summary>
       /// 完成对string类型数据的限制
       /// </summary>
       /// <returns></returns>
       public SqlParameter MakeInParamStr(string paramName,SqlDbType dbType,int size,string value)
       {
           if (value == null)
           {
               return MakeParam(paramName, dbType, size, ParameterDirection.Input, System.DBNull.Value);
           }
           else
           {
               return MakeParam(paramName, dbType, size, ParameterDirection.Input, value);
           }
       }
       /// <summary>
       /// 对Int,float类型的限制
       /// </summary>
       public SqlParameter MakeInParamIntF(string paramName, SqlDbType dbType, int size, object value)
       {
           if (float.Parse(value.ToString()) == 0)
           {
               return MakeParam(paramName, dbType, size, ParameterDirection.Input, System.DBNull.Value);
           }
           else
           {
               return MakeParam(paramName, dbType, size, ParameterDirection.Input, value);
           }
       }
       public SqlParameter MakeInParam(string paramName, SqlDbType dbType, object value)
       {
           return MakeParam(paramName,dbType,0,ParameterDirection.Input,value);
       }
       public SqlParameter MakeInParam(string paramName, SqlDbType dbType, int size, object value)
       {
           return MakeParam(paramName, dbType, size, ParameterDirection.Input, value);
       }
       public SqlParameter MakeOutParam(string paramName,SqlDbType dbType,int size)
       {
           return MakeParam(paramName,dbType,size,ParameterDirection.Output,null);
       }
       public SqlParameter MakeReturnParam(string paramName,SqlDbType dbType,int size)
       {
           return MakeParam(paramName,dbType,size,ParameterDirection.ReturnValue,null);
       }
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章