ADO.NET封装的SqlHelper

参照别人的方法,顺便再次复习下ADO.NET的相关知识。为自己的类库做准备。

namespace Common.SqlHelper
{
    /// <summary>
    /// ADO.NET-------底层的数据操作
    /// </summary>
    public class SqlHelper
    {
        /// <summary>
        /// 通过构造函数来实例化连接字符串
        /// </summary>
        /// <param name="connectionString"></param>
        public SqlHelper(string connectionString)
        {
            this.connectionString = connectionString;
        }
        private string connectionString;
        /// <summary>
        /// 设置DB访问字符串
        /// </summary>
        public string ConnectionSrting
        {
            set { connectionString = value; }
        }

        #region 执行一个查询,返回查询的结果集+ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
        public DataTable ExecuteDataTable(string sql)
        {
            return ExecuteDataTable(sql, CommandType.Text, null);
        }
        public DataTable ExecuteDataTable(string sql, CommandType commandType)
        {
            return ExecuteDataTable(sql, commandType, null);
        }

        /// <summary>
        /// 执行一个查询,返回查询的结果集。
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="commandtype"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
        {
            DataTable data = new DataTable();  //实例化datatable,用于装载查询的结果集
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandType = commandtype;
                    if (parameters != null)
                    {
                        foreach (SqlParameter parameter in parameters)
                        {
                            cmd.Parameters.Add(parameter);   //将参数添加到sql语句中。
                        }
                    }
                    //申明sqldataadapter,通过cmd来实例化它,这个是数据设备器,可以直接往datatable,dataset中写入。
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(data);   //利用Fill来填充。
                }
            }
            return data;
        }
        #endregion

        #region 返回一个SqlDataReader对象。

        public SqlDataReader ExecuteReader(string sql)
        {
            return ExecuteReader(sql, CommandType.Text, null);
        }
        public SqlDataReader ExecuteReader(string sql, CommandType commandType)
        {
            return ExecuteReader(sql, commandType, null);
        }

        /// <summary>
        /// 返回一个SqlDataReader,从 SQL Server 数据库读取行的只进流的方式
        /// </summary>
        /// <returns></returns>
        public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
        {
            SqlConnection conn = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (parameters != null)
            {
                foreach (SqlParameter parameter in parameters)
                {
                    cmd.Parameters.Add(parameter);
                }
            }
            conn.Open();
            //CommandBehavior.CloseConnection+关闭reader对象关闭与其连接的Connection对象。
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        #endregion

        #region 执行一个查询,返回结果集的首行首列。忽略其他行,其他列
        /// <summary>
        /// 只执行sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public object ExecuteScalar(string sql)
        {
            return ExecuteScalar(sql, CommandType.Text, null);
        }
        /// <summary>
        /// 可以执行存储过程
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="commandType"></param>
        /// <returns></returns>
        public object ExecuteScalar(string sql, CommandType commandType)
        {
            return ExecuteScalar(sql, commandType, null);
        }
        /// <summary>
        /// 执行一个查询,返回结果集的首行首列
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="commandType"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public object ExecuteScalar(string sql, CommandType commandType, SqlParameter[] parameters)
        {
            SqlConnection conn = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.CommandType = commandType;
            if (parameters != null)
            {
                foreach (SqlParameter parameter in parameters)
                {
                    cmd.Parameters.Add(parameter);
                }
            }
            conn.Open();
            //cmd.ExecuteScalar()+执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。
            object result = cmd.ExecuteScalar();
            conn.Close();
            return result;
        }

        #endregion

        #region 进行CRUD操作

        public int ExecuteNonQuery(string sql)
        {
            return ExecuteNonQuery(sql,CommandType.Text,null);
        }
        public int ExecuteNonQuery(string sql,CommandType commandType)
        {
            return ExecuteNonQuery(sql, commandType, null);
        }
        /// <summary>
        /// 对数据库进行增删改的操作
        /// </summary>
        /// <param name="sql">执行的Sql语句</param>
        /// <param name="commandType">要执行的查询语句类型,如存储过程或者sql文本命令</param>
        /// <param name="parameters">Transact-SQL语句或者存储过程的参数数组</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string sql,CommandType commandType,SqlParameter[]parameters)
        {
            SqlConnection conn=new SqlConnection(connectionString);
            SqlCommand cmd=new SqlCommand(sql,conn);
            cmd.CommandType = commandType;
            if (parameters!=null)
            {
                foreach (SqlParameter parameter in parameters)
                {
                    cmd.Parameters.Add(cmd);
                }
            }
            conn.Open();
            int count = cmd.ExecuteNonQuery();
            conn.Close();
            return count;
        }

        #endregion

        #region  返回当前连接的数据库中所有用户创建的数据库
        /// <summary>
        /// 返回当前连接的数据库中所有用户创建的数据库
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <returns></returns>
        public DataTable GetTable(string tableName)
        {
            DataTable table = new DataTable();
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                table = conn.GetSchema(tableName);
            }
            return table;
        }
        #endregion
    }
}
时间: 2024-08-08 18:49:00

ADO.NET封装的SqlHelper的相关文章

自己封装的SqlHelper

using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Text; namespace 自己封装的SqlHelper { public static class SqlHelper { //App.config 配置文件的内容 //<?xml version="1.0&quo

菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类

1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Data.SqlClient; 5 using System.Data; 6 using Microsoft.Win32; 7 8 namespace SqlHelp 9 { 10 /// <summary> 11 /// 定义SqlParameter所需的参数对象 12 /// </summary> 13

C# ADO.NET 封装的增删改查

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace MCO.ADO.NET { class SqlServerHelper { #region 该类

自己封装的sqlhelper代码

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException; import java.sql.PreparedStatement; /** * * @author xiaopihai * @version 1.0 * @time 2014-12-28 * */public class sqlHelper { private final

ADO.NET复习——自己编写SqlHelper类

今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题都会要你自己手写一个SqlHelper的类,这考的是自己的基本功,如果一个根基不牢固的开发人员,你写的代码肯定好不到哪里去. 下面是SqlHelper的演示代码,一定要熟练: 1 public static SqlHelper 2 { 3 //这里定义一个字符串变量,把数据库连接字符串赋值给它,也可

不该活着的SqlHelper和DBHelper

前言: 还记得刚学ADO.NET的情景么? 还记得当年是怎么从ADO.NET被忽悠到用SqlHelper的么? 话说从入门到走上工作岗位那些年,我们就一直被纯纯地教导或引导,ADO.NET太原始,得封装成SqlHelper或DBHelper...... 后来,这种思维一直深深就存在脑海里,并不知不觉中进入了潜意识,形成一种习惯. 在写框架的前几年,我也一直延续着这种思维,早期CYQ.Data的源码里,也有Sqlhelper,我也分享过Sqlhelper类的源码...... 后来框架写久了,开始对

分装一个SqlHelper类方便使用,着重理解params Sql

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Configuration; using _17

分装一个SqlHelper类方便使用,着重理解params SqlParameters[] commandParamters

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Configuration; using _17

EntityFramework与Ado.net的对比——EF优势何在?

更准确的说法是EF对比SqlHelper ado.net public class SqlHelper { public static readonly string connstr = "Server=.;Database=PhoneBook;Uid=sa;Pwd=********;"; //params 长度可变的参数. public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) {