数据访问类入门篇SqlDataBase.cs

using  System;
using  System.Collections.Generic;
using  System.Text;

// **********************************************************************************************
//   需新添加的命名空间如下:
// **********************************************************************************************
using  System.Data;
using  System.Configuration;
using  System.Data.SqlClient;
using  System.Windows.Forms;

namespace  ClassLibrary1
{
    
public   class  SqlDataBase
    {
        
private  SqlConnection conn;  // 创建数据连接器;
         private  SqlDataAdapter sda;  // 创建数据适配器;
         private  SqlDataReader sdr;   // 创建数据读取器;
         public  SqlCommand SqlCmd;   // 创建Sql命令;
         private  DataSet ds;          // 创建数据集;
         private  DataView dv;         // 创建数据视图;
         public  SqlDataBase()
        {
            
//
            
//  TODO: 在此处添加构造函数逻辑
            
//
        }
        
// **********************************************************************************************
        
//   打开数据库连接
        
// **********************************************************************************************
         public   void  MyOpen()
        {
            
try
            {
                conn 
=   new  SqlConnection(ConfigurationManager.ConnectionStrings[ " ConnStr " ].ConnectionString);
                
// conn = new SqlConnection(@"data Source=F14BC4C8DAE9418\SQLEXPRESS;database=recipeDB;security=true;");
                conn.Open();
            }
            
catch  (SqlException e)
            {
                MessageBox.Show(e.Errors[
0 ].Message.ToString());
            }
        }
        
// **********************************************************************************************
        
//   关闭数据库连接并释放资源
        
// **********************************************************************************************
         public   void  MyClose()
        {
            
if  (conn  !=   null )
            {
                conn.Close();
                conn.Dispose();
            }
        }

        
// **********************************************************************************************
        
//   返回数据集
        
// **********************************************************************************************
         public  DataSet GetDs( string  SqlString)
        {
            
try
            {
                MyOpen();
                sda 
=   new  SqlDataAdapter(SqlString, conn);
                ds 
=   new  DataSet();
                sda.Fill(ds);
                MyClose();
                
return  ds;
            }
            
catch (SqlException e)
            {
                MessageBox.Show(e.Errors[
0 ].Message.ToString());
                
return   null ;
            }
        }
     
        
// **********************************************************************************************
        
//   返回数据视图
        
// **********************************************************************************************
         public  DataView GetDv( string  SqlString)
        {
            ds 
=  GetDs(SqlString);
            dv 
=  ds.Tables[ 0 ].DefaultView;
            
return  dv;
        }
        
// **********************************************************************************************
        
//   创建数据视图
        
// **********************************************************************************************  
         public  DataView CreateView( string  strSql,  int  sRecord,  int  mRecord)
        {
            MyOpen();
            sda 
=   new  SqlDataAdapter(strSql, conn);
            ds 
=   new  DataSet();
            sda.Fill(ds, sRecord, mRecord, 
" temptbl " );
            DataView dv 
=  ds.Tables[ " temptbl " ].DefaultView;
            conn.Close();
            conn.Dispose();
            
return  dv;
        }
        
// **********************************************************************************************
        
//   获取数据表
        
// **********************************************************************************************
         public  DataTable GetDt( string  SqlString)
        {
            
return  GetDs(SqlString).Tables[ 0 ];
        }

        
// ***********************************************************************************************
        
//   返回数据读取器,执行完后关闭连接(使用该方法切记要手工关闭SqlDataReader和连接)
        
// ***********************************************************************************************
         public  SqlDataReader GetDr( string  SqlString)
        {
            MyOpen();
            SqlCmd 
=   new  SqlCommand(SqlString, conn);
            
try
            {
                sdr 
=  SqlCmd.ExecuteReader();
                
return  sdr;
            }
            
catch  (System.Data.SqlClient.SqlException e)
            {
                
throw   new  Exception(e.Message);
            }
            
finally   // 不能在此关闭,否则,返回的对象将无法使用
            {
            
// 在这关闭 SqlDataReader对象.eg. 
                
// dr.Close();
                
// SqlCmd.Dispose();
                
// MyClose();
            }    

        }

        
// **********************************************************************************************
        
//   执行无需返回的Sql语句
        
// **********************************************************************************************
         public   bool  RunSql( string  SqlString)
        {
            
try
            {
                MyOpen();
                SqlCmd 
=   new  SqlCommand(SqlString, conn);
                
if  (SqlCmd.ExecuteNonQuery()  >   0 )
                {
                    MyClose();
                    
return   true ;
                }
                
else
                {
                    MyClose();
                    
return   false ;
                }

            }
            
catch  {  return   false ; }
        }

        
public   void  ExecuteSql( string  sqlstr)
        {
            
try
            {
                MyOpen();
                SqlCmd 
=   new  SqlCommand(sqlstr, conn);

                SqlCmd.ExecuteNonQuery();
            }
            
catch  (Exception e)
            {
                
throw   new  Exception(e.Message);
            }
            
finally
            {
                MyClose();
            }
        }
        
// ************************************************************************************************
        
//   返回Sql语句的第一行第一列,否则返回空
        
// ************************************************************************************************
         public   string  RunSqlReturn( string  SqlSrting)
        {
            
string  returnString  =   "" ;
            MyOpen();
            SqlCmd 
=   new  SqlCommand(SqlSrting, conn);
            
try
            {
                returnString 
=  SqlCmd.ExecuteScalar().ToString();
                
return  returnString;
            }
            
catch
            {
                
return  returnString;
            }
            
finally
            {
                MyClose();
            }
        }

        
// **********************************************************************************************
        
//   返回一个数据行
        
// **********************************************************************************************
         public  DataRow GetDataRow( string  SqlString)
        {
            DataSet dataset 
=  GetDs(SqlString);
            dataset.CaseSensitive 
=   false ;
            
if  (dataset.Tables[ 0 ].Rows.Count  >   0 )
            {
                
return  dataset.Tables[ 0 ].Rows[ 0 ];
            }
            
else
            {
                
return   null ;
            }
        }
        
// **********************************************************************************************
        
//   返回object对象
        
// **********************************************************************************************
         public   object  ExceScalar( string  SqlString)
        {
            
try
            {
                MyOpen();
                SqlCmd 
=   new  SqlCommand(SqlString, conn);
                
object  val  =  SqlCmd.ExecuteScalar();
                SqlCmd.Parameters.Clear();
                MyClose();
                
return  val;

            }
            
catch
            {

                
return   null ;

            }
        }
        
#region  ExeSqlFillTab(string sqlStr, ref DataSet TargetDataSet)执行sql,并将返回信息填充到到TargetDataSet中,执行成功返回true,否则为false
        
///   <summary>
        
///
        
///      执行sql,并将返回信息填充到到TargetDataSet中的tableName中,执行成功返回true,否则为false
        
/// </summary>  
         public    bool  ExeSqlFillTab( string  SqlString,  ref  DataSet TargetDataSet)
        {
            
try
            {
                MyOpen();
                SqlCmd 
=   new  SqlCommand(SqlString, conn);
                SqlCmd.CommandType 
=  CommandType.Text;

                sda 
=   new  SqlDataAdapter(SqlString, conn);

                sda.Fill(TargetDataSet);
                MyClose();
                
return   true ;
            }
            
catch  (Exception ex)
            {
                Console.WriteLine(ex.Message);
                
// TLog.WriteLog("ExeSqlFillTab Error:"+ex.Message+" sql:"+sqlStr);
                 return   false ;
            }
            
finally
            {
                MyClose();
                
if  (SqlCmd  !=   null )
                    SqlCmd.Dispose();
            }
        }
        
#endregion
    }
}

 

  注意:上面的代码初学者可以拿来学学,但在做项目中不要用它,因为大多访问数据库方法没有及时销废相关对象,导致如下问题出现:http://www.cnblogs.com/qiantuwuliang/archive/2009/05/31/1492959.html,建议使用微软发布的SqlHelper.cs类,(在Petshop 当中可找到它)!!!

你可能感兴趣的:(database)