`
dotcpp
  • 浏览: 60164 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

.NET操作数据库类

阅读更多

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Diagnostics;

public class SqlClass
{
    protected SqlConnection Connection;
    protected string connectionstring;

    public SqlClass()
    {
        connectionstring = "Server=(local);Database=LightA;uid=sa;pwd=;";
        Connection = new SqlConnection(connectionstring);
    }

    public SqlClass(string connstring)
    {
        connectionstring = connstring;
        Connection = new SqlConnection(connectionstring);
    }

    /// <summary>
    /// 得到SQL连接
    /// </summary>
    public SqlConnection GetConnection()
    {
        if (Connection.State != ConnectionState.Open)
            Connection.Open();
        return Connection;
    }

    public void CloseConnection()
    {
        if (Connection.State != ConnectionState.Closed)
            Connection.Close();
    }


    /*执行返回结果和不返回结果的存储过程方法*/
    /// <summary>
    /// 根据存储过程名称和参数生成对应的SQL命令对象
    /// </summary>
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    private SqlCommand BuilderQueryCommand(string storedProcName, SqlParameter[] parameters)
    {
        SqlCommand command = new SqlCommand();
        command.Connection = Connection;
        command.CommandText = storedProcName.Trim();
        command.CommandType = CommandType.StoredProcedure;
        if (parameters != null)
        {
            foreach (SqlParameter p in parameters)
            {
                command.Parameters.Add(p);
            }
        }
        return command;
    }
    /// <summary>
    /// 返回结果的存储过程
    /// </summary>
    public SqlDataReader GetDataReaderByProc(string storedProcName, SqlParameter[] parameters)
    {
        SqlDataReader reader;
        SqlCommand cmd = BuilderQueryCommand(storedProcName, parameters);
        if (Connection.State == ConnectionState.Closed)
        {
            Connection.Open();
        }
        reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        return reader;
    }
    /// <summary>
    /// 不返回结果的存储过程
    /// </summary>
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">参数值</param>
    /// <returns></returns>
    public int GetEffect(string storedProcName, SqlParameter[] parameters)
    {
        int result = 0;
        try
        {
            if (Connection.State == ConnectionState.Closed)
            {
                Connection.Open();
            }
            SqlTransaction trans = Connection.BeginTransaction();
            try
            {
                SqlCommand cmd = BuilderQueryCommand(storedProcName, parameters);
                cmd.Transaction = trans;
                result = cmd.ExecuteNonQuery();
                trans.Commit();
                Connection.Close();
                return result;
            }
            catch (Exception ex)
            {
                if (trans != null)
                {
                    trans.Rollback();
                    return result;
                }
                throw ex;

            }
            finally
            {
                if (trans != null)
                {
                    trans.Dispose();
                }
                Connection.Close();
            }
        }
        catch (Exception ex1)
        {
            Debug.WriteLine(ex1.ToString());
            return 0;
            //throw new Exception(ex1.Message);
        }
    }
    /// <summary>
    /// 返回dateSet
    /// </summary>
    /// <param name="ProcName"></param>
    /// <param name="parameters"></param>
    /// <param name="tableName"></param>
    /// <returns></returns>
    public DataSet GetDataSetByProc(string ProcName, SqlParameter[] parameters, string tableName)
    {
        try
        {

            DataSet ds = new DataSet();
            if (Connection.State == ConnectionState.Closed)
            {
                Connection.Open();
            }

            SqlDataAdapter myDa = new SqlDataAdapter();
            myDa.SelectCommand = BuilderQueryCommand(ProcName, parameters);
            myDa.Fill(ds, tableName);
            return ds;
        }
        catch
        {
            return null;
        }
        finally
        {
            Connection.Close();
        }
    }
    /// <summary>
    /// 自定义分页
    /// </summary>
    /// <param name="ProcName">存储过程名</param>
    /// <param name="parameters">参数名</param>
    /// <param name="start">起始页</param>
    /// <param name="maxRecord">记录数</param>
    /// <param name="tableName">表名</param>
    /// <returns></returns>
    public DataSet GetDataSetByProc(string ProcName, SqlParameter[] parameters, int start, int maxRecord, string tableName)
    {
        try
        {
            DataSet ds = new DataSet();
            if (Connection.State == ConnectionState.Closed)
            {
                Connection.Open();
            }
            Connection.Open();
            SqlDataAdapter myDa = new SqlDataAdapter();
            myDa.SelectCommand = BuilderQueryCommand(ProcName, parameters);
            myDa.Fill(ds, start, maxRecord, tableName);
            return ds;
        }
        catch
        {
            Connection.Close();
            return null;
        }
        finally
        {
            Connection.Close();
        }
    }
    /// <summary>
    /// 返回object类型 比如首行首列
    /// </summary>
    /// <param name="storedProcName">存储过程名称</param>
    /// <param name="parameters">参数列表</param>
    /// <returns></returns>
    public object GetObjectByProc(string storedProcName, SqlParameter[] parameters)
    {
        object result = null;

        if (Connection.State == ConnectionState.Closed)
        {
            Connection.Open();
        }
        //   SqlTransaction trans = Connection.BeginTransaction();
        try
        {
            SqlCommand cmd = BuilderQueryCommand(storedProcName, parameters);
            // cmd.Transaction = trans;
            result = cmd.ExecuteScalar();
            // trans.Commit();
            Connection.Close();
            return result;
        }
        catch
        {
            // trans.Rollback();
            return result;
        }
        finally
        {
            Connection.Close();
        }
    }
    /// <summary>
    /// 通过ID号操作某条记录,比如删除ID号的记录
    /// </summary>
    /// <param name="ProcName">存储过程名</param>
    /// <param name="id">值</param>
    /// <param name="paraname">参数名如:@ID</param>
    /// <returns></returns>
    public int RunProcByID(string ProcName, int id, string paraname)
    {
        try
        {
            SqlParameter[] p ={ new SqlParameter(paraname, SqlDbType.Int) };
            p[0].Value = id;
            return GetEffect(ProcName, p);
        }
        catch
        {
            Connection.Close();
            return 0;
        }
        finally
        {
            Connection.Close();
        }
    }
    /// <summary>
    /// 修改ID号为keyValue的记录的ParaDieldName字段的值为FiledValue
    /// </summary>
    /// <param name="ProcName">相信过程名</param>
    /// <param name="keyValue">ID号的值</param>
    /// <param name="paraKeyName">ID号对应的字段名</param>
    /// <param name="paraFieldName">要修改的字段名</param>
    /// <param name="FieldValue">要修改字段的值</param>
    /// <param name="length">字段的长度</param>
    /// <returns></returns>
    public int UpdateByID(string ProcName, int keyValue, string paraKeyName, string paraFieldName, string FieldValue, int length)
    {
        try
        {
            SqlParameter[] p ={ new SqlParameter(paraFieldName,SqlDbType.VarChar,length),
                                    new SqlParameter(paraFieldName, SqlDbType.Int) 
                                   };
            p[0].Value = FieldValue;
            p[1].Value = keyValue;
            return GetEffect(ProcName, p);
        }
        catch
        {
            Connection.Close();
            return 0;
        }
        finally
        {
            Connection.Close();
        }
    }

   #region 执行SQL,返回DataSet
    /// <summary>
    /// 执行SQL语句返回DataSet
    /// </summary>
    public DataSet GetDataSet(string strSql)
    {
        try
        {

            DataSet ds = new DataSet();
            if (Connection.State == ConnectionState.Closed)
            {
                Connection.Open();
            }
            SqlDataAdapter myDa = new SqlDataAdapter();
            myDa.SelectCommand = new SqlCommand(strSql, Connection);
            myDa.Fill(ds);
            return ds;
        }
        catch
        {
            return null;
        }
        finally
        {
            Connection.Close();
        }
    }
   #endregion

    #region  执行SQL,返回影响行数
    /// <summary>
    /// 执行SQL语句返回影响行数
    /// </summary>
    public int RunSql(string strSql)
    {
        int effect = 0;
        if (Connection.State == ConnectionState.Closed)
        {
            Connection.Open();
        }
        SqlTransaction trans = Connection.BeginTransaction();
        try
        {
            SqlCommand cmd = new SqlCommand(strSql, Connection);
            cmd.Transaction = trans;
            effect = cmd.ExecuteNonQuery();
            trans.Commit();
            return effect;
        }
        catch
        {
            trans.Rollback();
            Connection.Close();
            return effect;
        }
        finally
        {
            Connection.Close();
        }
    }
    #endregion

    #region 执行SQL语句返回SqlDataReader
    /// <summary>
    /// 执行SQL语句返回SqlDataReader
    /// </summary>
    public SqlDataReader GetDataReader(string strsql)
    {
        if (Connection.State == ConnectionState.Closed)
        {
            Connection.Open();
        }
        try
        {
            SqlCommand cmd = new SqlCommand(strsql, Connection);
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        catch
        {
            Connection.Close();
            return null;
        }

    }
    #endregion

    #region 执行SQL,返回首行首列
    /// <summary>
    /// 执行SQL语句返回object
    /// </summary>
    public object GetObject(string strsql)
    {
        if (Connection.State == ConnectionState.Closed)
        {
            Connection.Open();
        }
        object obj = null;
        try
        {
            SqlCommand cmd = new SqlCommand(strsql, Connection);
            obj = cmd.ExecuteScalar();
            Connection.Close();
            return obj;
        }
        catch
        {
            Connection.Close();
            return null;
        }
       finally
        {
            Connection.Close();
       }
    }
    #endregion

#region 执行SQL,得到DataTable
    public DataTable GetDataTable(string strSql)
    {
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter();
        try
        {
            SqlCommand cmd = new SqlCommand(); 
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strSql;
            cmd.Connection = GetConnection();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.ToString());
            CloseConnection();
        }
        finally
        {
            CloseConnection();
        }
        return dt;
    }
#endregion
}
 

 

   使用举例:

 

   SqlClass sql = new SqlClass();

            SqlDataReader dr = sql.GetDataReader("select * from");
            if (dr != null)
            {
                while (dr.Read())
                {
                    if (dr["RecvTime"] != DBNull.Value)
                    {
                        //......
                    }
                }
                dr.Close();
                dr.Dispose();
            }

 

 

 

 

分享到:
评论

相关推荐

    asp.net数据库操作类

    asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net数据库操作类asp.net...

    ASP.NET网络数据库开发实例精解

    使用ADO.NET操作数据库 显示数据库中的内容 (listbox dropdownlist datalist datagrid 及显示数据库中的图片) 使用ASP.NET操作数据库 断开式数据库访问 使用数据网格处理数据 常用ASP.NET模块 ASP.NET网络数据库...

    C#(VB.net)数据库访问操作类库

    C#(VB.net)数据库访问操作类库 你知道,一些类库把常用的操作封装起来,以后可以直接调用,就节省了普通开发人员的大量精力. 对于CN 大多数公司都是开发MIS系统 说白了就是数据库系统 使用数据访问类库,必将节省大量...

    .net数据库操作大全

    总的来说,.NET提供了多种方式来操作数据库,无论是继续使用传统的ADO还是切换到更现代的ADO.NET,都能满足开发者的需求。理解这些操作方式有助于提升开发效率,尤其是在需要维护旧项目或整合不同技术栈时。

    ASP.NET操作数据库实例

    在"ASP.NET操作数据库实例"这个主题中,我们将深入探讨如何使用ASP.NET与SQL数据库进行交互。 首先,ASP.NET提供了多种方式来操作数据库,如ADO.NET、Entity Framework、Linq to SQL等。其中,ADO.NET是.NET ...

    ADO.NET操作数据库总结

    ADO.NET 是 .NET Framework 中用于访问...总之,ADO.NET提供了一套全面的工具和类库,使得开发人员能够高效地处理数据库操作,同时也充分利用了XML的灵活性和互操作性,使其成为.NET框架下进行数据库编程的重要选择。

    .NET操作数据库助手类包集

    因为工作至今接触的数据库还算比较全面,每次搭建新项目开发数据库选择后,都要编写整理对应的.NET与数据库交互的DBHelper助手类,时间一长,便将各类型数据库助手类整理出来共享,在提升大家开发效率的同时,减少...

    ASP.NET2.0数据库操作类SQLHELP

    ### ASP.NET 2.0数据库操作类SQLHELP详解 在.NET框架中,ASP.NET 2.0是一个重要的版本,它提供了丰富的功能来构建动态Web应用。其中,数据库操作是Web开发中的关键环节,为了简化这一过程,开发人员经常创建自定义...

    如何使用ADO.NET连接数据库

    ADO.NET 连接数据库详解 ADO.NET 是 Microsoft .NET Framework 的一部分,提供了访问数据库的能力。使用 ADO.NET,可以连接各种类型的数据库,如 Access、SQL Server、Oracle 等。在本文中,我们将详细介绍如何使用...

    VB.NET与数据库

    【VB.NET与数据库】这篇PPT教程主要涵盖了VB.NET的基础知识以及如何利用VB.NET进行数据库应用程序的开发。VB.NET是Microsoft公司2002年发布的一种面向对象的编程语言,它是在Visual Basic的基础上,结合.NET框架发展...

    vs2010 asp.net 连接数据库类

    asp.net 连接数据库及数据库详细操作代码,请下载!

    phd.net实时数据库取数类

    "phd.net实时数据库取数类"是指利用.NET框架与PHD(Process History Database,过程历史数据库)进行交互,以获取或操作实时和历史数据的编程示例。PHD是由霍尼韦尔公司开发的一款强大的实时数据库系统,广泛应用于...

    C#.net数据库操作类

    EF允许开发者使用面向对象的方式来操作数据库,无需关注底层SQL细节。EF有多种工作模式,如Code First、Model First、Database First,可以根据项目需求选择合适的方式。 三、C#数据库操作实例 以下是一个简单的...

    ASP.NET 4.5 数据库入门经典 第3版

    《ASP.NET 4.5 数据库入门经典》第三版是一本专为初学者设计的教程,旨在帮助读者快速掌握ASP.NET 4.5框架下的数据库编程技术。这本书以通俗易懂的方式介绍了诸多关键概念和实践技巧,使得读者即使在没有深入接触过...

    .net操作数据库的封装dll

    .net操作数据库的封装

    ASP.NET通用数据库访问组件

    总之,ASP.NET通用数据库访问组件是ASP.NET开发中的一个强大工具,它实现了跨数据库的统一访问,简化了数据库操作,提升了项目的可扩展性和可维护性。通过深入理解和熟练使用这样的组件,开发者能够更高效地构建和...

    精通C#与.NET 4.0数据库开发 2 OF 2

    精通C#与.NET 4.0数据库开发 2 OF 2 --------------------------------------------- ...全书共六篇,包括:C# 4.0语言基础、开发应用程序、SQL Server 2008基础、ADO.NET操作数据库、LINQ查询开发、项目实战。

    .NET MySql数据库驱动

    这个驱动程序允许开发者在C#、VB.NET或其他.NET支持的语言中编写代码,以执行SQL查询、操作数据以及管理MySQL数据库。在本场景中,我们有两个关键文件:`mysql.data.msi`和`连接字符串.txt`。 `mysql.data.msi`是...

Global site tag (gtag.js) - Google Analytics