地產項目管理數據庫操作類

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);
       }
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章