SqlHelper模板

在实际开发中,我们不会直接使用拼写SQL语句的方法进行数据库操作,而是使用参数化的方法进行数据库操作,这样做的好处很多,不仅提高了程序的健壮性,同时也避免的SQL注入的问题。在这里,笔者为初学者提供一个SQLHelper模板,希望对新手有所启发。

public static class SqlHelper
    {
        public static readonly string strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;

        public static int ExecuteNonQuery(string cmdText, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                conn.Open();
                return ExecuteNonQuery(conn, cmdText, parameters);
            }
        }
        public static int ExecuteNonQuery(SqlConnection conn, string cmdText, params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteNonQuery();
            }
        }

        public static object ExecuteScalar(string cmdText, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                conn.Open();
                return ExecuteScalar(conn, cmdText, parameters);
            }
        }
        public static object ExecuteScalar(SqlConnection conn, string cmdText, params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteScalar();
            }
        }

        public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                conn.Open();
                return ExecuteDataTable(conn, cmdText, parameters);
            }
        }
        public static DataTable ExecuteDataTable(SqlConnection conn, string cmdText, params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    return dt;
                }
            }
        }

        /// <summary>
        /// 存数据时防止为空
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static object ToDbValue(this object value)
        {
            return value == null ? DBNull.Value : value;
        }

        /// <summary>
        /// 取数据时防止为空
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static object FromDbValue(this object value)
        {
            return value == DBNull.Value ? null : value;
        }
    }
时间: 2024-11-29 01:04:13

SqlHelper模板的相关文章

分享一套简单的CodeSmith三层模板

Model: <%@ Template Language="C#" TargetLanguage="C#" %> <%@ Assembly Name="SchemaExplorer" %> <%@ Import Namespace="SchemaExplorer" %> <%@ Property Name="SourceTable" Type="Schem

机房收费重构(四)-SqlHelper

     最近由于学校专业课考试,导致上一篇的一些博客没有及时补上,让读者久等了,下面来说说关于DAL中一个模板吧-SqlHelper.      在敲机房收费中,有好多都是重复的访问数据库这些操作,这样我们可以将这些步骤抽象出来,命名为SqlHelper.在任何时候想到抽象和封装.面向对象的思想深入骨髓.      在SQLHelper中主要有四类,分别是: 不带参数的sql增删改语句或存储过程(无返回行或值) 带参数的sql增删改语句或存储过程(无返回行或值) 不带参数的sql查询语句或存储

MVC+BootStrap 企业通用型框架搭建 ---(1)框架布局及模板页的创建

本系统使用的ui框架是Bootstrap3.0 布局是使用mvc的模板页面:分[左侧菜单栏目],头部[个人信息任务栏目],尾部[公司信息简介栏目],三大块: 系统搭建:(1)ManagerSystem.DI(控制反转层),ManagerSystem.UI(MVC UI层),ManagerSystem.Utility(通用工具类),SqlServer.BLL(通用业务层),SqlServer.IBLL(父业务层),SqlServer.DAL(数据层), SqlServer.IDAL(父数据层);

其他层次的模板

在[CodeSmith快速入门之四:模型层的生成]中,我们介绍了模型层模板的生成,在本章我们将会介绍其他层次的模板. 因为每个层次的模板编写都比较类似,所以这次不会对模板代码进行详细的说明,尽请谅解,谢谢 1.数据访问接口代码生成模版 <%-- Name: 数据访问接口代码生成模版Author: FencerDescription: 根据数据库的内容生成数据访问层接口Version: V1.0 新规初成--%><%@ CodeTemplate Language="C#"

真正的SqlHelper,让程序写Sql也那么美

真正的SqlHelper,让程序写Sql也那么美 在程序里写Sql语句是程序员经常干的事,一串长长的字符串完全由键盘敲写,容易出错.且效率低,开发工具的智能提示无法检测出编写的Sql字符串是否有错误. 如果有个工具可以让写Sql像写程序一样便捷,这个样子: 你是否想尝试一下呢? 第一步:使用NuGet包管理器引用Rc.PetaPoco.T4 安装成功后,项目里多出Models文件夹,文件夹里包含T4模板文件. 在web.config或者app.config里配置连接字符串,配置完成后将字符串的名

一个简单的代码生成器(T4文本模板运用)

说要写这篇文章有一段时间了,但因为最近各方面的压力导致心情十二分的不好,下班后往往都洗洗睡了.今天痛定思痛,终于把这件拖了很久的事做了.好,不废话了,现在看看"一个简单的代码生成器" . 先看看界面吧! 简约到如此,说是代码生成器,估计是要被吐槽的.好吧,借用园子里博友的说法,这只是一粒粟子,如果你愿意,你能看到代码生成器的"种子". 这样运行的! 画了个简图已描述这个简单的代码生成器的工作过程.下面的介绍将以此图展开: 1)读取数据表的信息:从数据库中读取数据表的

CodeSmith自己动手写模板

CodeSmith学习笔记------ 1.新建一个Code Smith Generator Template(C sharp) 2.一些常见标签的解释: ①外部变量: <%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %> 表示定义一个string类型的外部变量,在需要在生成的时候才输入,此属性有默认值,也可以由用户在右

Vue.js项目模板搭建

前言 从今年(2017年)年初起,我们团队开始引入「Vue.js」开发移动端的产品.作为团队的领头人,我的首要任务就是设计 整体的架构 .一个良好的架构必定是具备丰富的开发经验后才能搭建出来的.虽然我有多年的前端开发经验,但就「Vue.js」来说,仍然是个新手.所幸「Vue.js」有一个配套工具「Vue-CLI」,它提供了一些比较成熟的项目模板,很大程度上降低了上手的难度.然而,很多具体的问题还是要自己思考和解决的. 项目划分 我们公司的H5产品大部分是嵌套在手机客户端里面的页面.每个项目的功能

ac自动机基础模板(hdu2222)

In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image retrieval system. Every image have a long description, when users type some keywords to find the image, th