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 当中可找到它)!!!

posted on 2009-07-14 15:49  钱途无梁  阅读(2738)  评论(1编辑  收藏  举报