SqlHelper改造版本

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Collections;


    /// <summary>
    /// SqlHelper类是专门提供给广大用户用于高性能、可升级和最佳练习的sql数据操作
    /// </summary>
    public abstract class SqlHelper
    {

 
        // 用于缓存参数的HASH表
        // public static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
        /// <summary>
        /// 返回一个数据表(Fill)1
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="cmdType">类型</param>
        /// <param name="cmdText">命令</param>
        /// <param name="TableName">DataTable表名</param>
        /// <returns>DataTable</returns>
        public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText,string TableName)
        {

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter dpt = new SqlDataAdapter();
            using (SqlConnection Conn = new SqlConnection(connectionString))
            {
                cmd.CommandType = cmdType;
                cmd.CommandText = cmdText;
                dpt.SelectCommand = cmd;
                DataSet DsResoult = new DataSet();
                dpt.Fill(DsResoult, TableName);
                return DsResoult.Tables[TableName];
            }
        }
        /// <summary>
        /// 返回一个数据表(Fill)2
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="cmdType">类型</param>
        /// <param name="cmdText">命令</param>
        /// <returns>DataTable</returns>
        public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText)
        {

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter dpt = new SqlDataAdapter();
            using (SqlConnection Conn = new SqlConnection(connectionString))
            {
                cmd.CommandType = cmdType;
                cmd.CommandText = cmdText;
                dpt.SelectCommand = cmd;
                DataSet DsResoult = new DataSet();
                dpt.Fill(DsResoult, "TempTable");
                return DsResoult.Tables["TempTable"];
            }
        }
           /// <summary>
        /// 返回一个数据表(Fill)3
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="cmdType">类型</param>
        /// <param name="cmdText">命令</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>DataTable</returns>
        public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter dpt = new SqlDataAdapter();
            using (SqlConnection Conn = new SqlConnection(connectionString))
            {
                PrepareCommand(cmd, Conn, null, cmdType, cmdText, commandParameters);
                cmd.CommandType = cmdType;
                cmd.CommandText = cmdText;
                dpt.SelectCommand = cmd;
                DataSet DsResoult = new DataSet();
                dpt.Fill(DsResoult, "TableName");
                cmd.Parameters.Clear();
                return DsResoult.Tables["TableName"];
            }
        }
        /// <summary>
        /// 返回一个数据表(Fill)4
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="cmdType">类型</param>
        /// <param name="cmdText">命令</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>DataTable</returns>
        public static DataTable SelectTable(string connectionString, CommandType cmdType, string cmdText, string TableName, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter dpt = new SqlDataAdapter();
            using (SqlConnection Conn = new SqlConnection(connectionString))
            {
                PrepareCommand(cmd, Conn, null, cmdType, cmdText, commandParameters);
                cmd.CommandType = cmdType;
                cmd.CommandText = cmdText;
                dpt.SelectCommand = cmd;
                DataSet DsResoult = new DataSet();
                dpt.Fill(DsResoult, TableName);
                cmd.Parameters.Clear();
                return DsResoult.Tables[TableName];
            }
        }
        /// <summary>
        ///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
        /// </summary>
        /// <param name="connectionString">一个有效的连接字符串</param>
        /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="commandText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>执行命令所影响的行数</returns>
        public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }

        /// <summary>
        /// 用现有的数据库连接执行一个sql命令(不返回数据集)
        /// </summary>
        /// <param name="conn">一个现有的数据库连接</param>
        /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="commandText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>执行命令所影响的行数</returns>
        public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();
   
            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }

        /// <summary>
        ///使用现有的SQL事务执行一个sql命令(不返回数据集)
        /// </summary>
        /// <remarks>
        ///举例: 
        ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
        /// </remarks>
        /// <param name="trans">一个现有的事务</param>
        /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="commandText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>执行命令所影响的行数</returns>
        public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }

        /// <summary>
        /// 用执行的数据库连接执行一个返回数据集的sql命令
        /// </summary>
        /// <remarks>
        /// 举例: 
        ///  SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
        /// </remarks>
        /// <param name="connectionString">一个有效的连接字符串</param>
        /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="commandText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>包含结果的读取器</returns>
        public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            //创建一个SqlCommand对象
            SqlCommand cmd = new SqlCommand();
            //创建一个SqlConnection对象
            SqlConnection conn = new SqlConnection(connectionString);

            //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
            //因此commandBehaviour.CloseConnection 就不会执行
            try
            {
                //调用 PrepareCommand 方法,对 SqlCommand 对象设置参数
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                //调用 SqlCommand  的 ExecuteReader 方法
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                //清除参数
                cmd.Parameters.Clear();
                return reader;
            }
            catch
            {
                //关闭连接,抛出异常
                conn.Close();
                throw;
            }
        }

        /// <summary>
        /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
        /// </summary>
        /// <remarks>
        ///例如: 
        ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
        /// </remarks>
        ///<param name="connectionString">一个有效的连接字符串</param>
        /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="commandText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
        public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                object val = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                return val;
            }
        }

        /// <summary>
        /// 用指定的数据库连接执行一个命令并返回一个数据集的第一列
        /// </summary>
        /// <remarks>
        /// 例如: 
        ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
        /// </remarks>
        /// <param name="conn">一个存在的数据库连接</param>
        /// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="commandText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
        public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();

            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
            object val = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
            return val;
        }


        /// <summary>
        /// 准备执行一个命令
        /// </summary>
        /// <param name="cmd">sql命令</param>
        /// <param name="conn">Sql连接</param>
        /// <param name="trans">Sql事务</param>
        /// <param name="cmdType">命令类型例如 存储过程或者文本</param>
        /// <param name="cmdText">命令文本,例如:Select * from Products</param>
        /// <param name="cmdParms">执行命令的参数</param>
        public static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
        {

            if (conn.State != ConnectionState.Open)
                conn.Open();

            cmd.Connection = conn;
            cmd.CommandText = cmdText;

            if (trans != null)
                cmd.Transaction = trans;

            cmd.CommandType = cmdType;

            if (cmdParms != null)
            {
                foreach (SqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归分析预测_使用回归分析预测心脏病。

回归分析预测As per the Centers for Disease Control and Prevention report, heart disease is the prime killer of both men and women in the United States and around the globe. There are several data mining techniques that can be leveraged by researchers/ stat…

VMware文件共享

VMware tools 文件共享 已经安装后&#xff1a; vmhgfs-fuse .host:/ /mnt/hgfs

npm 问题(一)

今天在使用npm安装程序时出现了以下问题如下&#xff1a; 我解决了问题&#xff0c;这是由于缓存清除错误&#xff08;但他们自动修复&#xff09;有一些数据损坏&#xff0c;没有让JSON文件解析&#xff0c;使用以下命令可以解决&#xff1a;即&#xff1a; npm cache clean -…

UDP打洞程序包的源码

C#实现UDP打洞 转自&#xff1a;http://hi.baidu.com/sdfiyon/blog/item/63a6e039155e02f23a87ceb1.html 下面是UDP打洞程序包的源码&#xff1a;//WellKnown公用库using System;using System.IO;using System.Runtime.Serialization.Formatters.Binary;using System.Net ;usi…

NLPPython笔记——WordNet

WordNet是一种面向语义的英语词典&#xff0c;由Princeton大学的心理学家、语言学家和计算机工程师联合设计。它不是光把单词以字母顺序排列&#xff0c;而且按照单词的意义组成一个“单词的网络”。 NLTK库中包含了英语WordNet&#xff0c;里面共有155287个词以及117659个同义…

crc16的c语言函数 计算ccitt_C语言为何如此重要

●●●如今&#xff0c;有很多学生不懂为何要学习编程语言&#xff0c;为何要学习C语言&#xff1f;原因是大学生不能满足于只会用办公软件&#xff0c;而应当有更高的学习要求&#xff0c;对于理工科的学生尤其如此。计算机的本质是“程序的机器”&#xff0c;程序和指令的思想…

毫米波雷达与激光雷达的初探

毫米波雷达与激光雷达的初探 雷达 &#xff08;Radio Detection and Range, Radar&#xff09;是一种利用电磁波来对目标进行探测和定位的电子设备。实现距离测量、运动参数测量、搜索和发现目标、目标定位、目标特性参数分析等功能。 分类 电磁波按照从低频到高频的顺序&…

aws spark_使用Spark构建AWS数据湖时的一些问题以及如何处理这些问题

aws spark技术提示 (TECHNICAL TIPS) 介绍 (Introduction) At first, it seemed to be quite easy to write down and run a Spark application. If you are experienced with data frame manipulation using pandas, numpy and other packages in Python, and/or the SQL lang…

冲刺第三天 11.27 TUE

任务执行情况 已解决问题 数据库结构已经确定 对联生成model已训练完成 词匹配部分完成 微信前端rush版本完成 总体情况 团队成员今日已完成任务剩余任务困难Dacheng, Weijieazure数据库搭建(完成&#xff09;multiple communication scripts, call APIs需要进行整合调试Yichon…

锁是网络数据库中的一个非常重要的概念

锁是网络数据库中的一个非常重要的概念&#xff0c;它主要用于多用户环境下保证数据库完整性和一致性。各种大型数据库所采用的锁的基本理论是一致的&#xff0c;但在具体 实现上各有差别。目前&#xff0c;大多数数据库管理系统都或多或少具有自我调节、自我管理的功能&#x…

DPDK+Pktgen 高速发包测试

参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架&#xff0c;发包速率可达线速。提供运行时管理&#xff0c;端口实时测量。可以控制 UDP, TCP, ARP, ICMP, GRE, MPLS and Queue-in-Queue等包。可以通过TCP进行远程控制。Pktgen官网 安装使用过程 版本…

python 商城api编写_Python实现简单的API接口

1. get方法import jsonfrom urlparse import parse_qsfrom wsgiref.simple_server import make_server# 定义函数&#xff0c;参数是函数的两个参数&#xff0c;都是python本身定义的&#xff0c;默认就行了。def application(environ, start_response):# 定义文件请求的类型和…

opencv (一) 学习通过OpenCV图形界面及基础

opencv 学习通过OpenCV图形界面基础 用的函数有 cv.line(), cv.circle(),cv.rectangle(), cv.ellipse(),cv.putText() 常用参数 img : 想要绘制图形的图片color: 图形的颜色&#xff0c; BGRthickness&#xff1a;厚度lineType: 线的类型&#xff0c; 8-connected、anti-al…

python精进之路 -- open函数

下面是python中builtins文件里对open函数的定义&#xff0c;我将英文按照我的理解翻译成中文&#xff0c;方便以后查看。 def open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue): # known special case of open """  …

数据科学家编程能力需要多好_我们不需要这么多的数据科学家

数据科学家编程能力需要多好I have held the title of data scientist in two industries. I’ve interviewed for more than 30 additional data science positions. I’ve been the CTO of a data-centric startup. I’ve done many hours of data science consulting.我曾担…

基于xtrabackup GDIT方式不锁库作主从同步(主主同步同理,反向及可)

1.安装数据同步工具 注&#xff1a;xtrabackup 在数据恢复的时候比mysqldump要快很多&#xff0c;特别是大数据库的时候&#xff0c;但网络传输的内容要多&#xff0c;压缩需要占用时间。 yum install https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12…

excel表格行列显示十字定位_WPS表格:Excel表格打印时,如何每页都显示标题行?...

电子表格数据很多的时候&#xff0c;要分很多页打印&#xff0c;如何每页都能显示标题行呢&#xff1f;以下表为例&#xff0c;我们在WPS2019中演示如何每页都显示前两行标题行&#xff1f;1.首先点亮顶部的页面布局选项卡。然后点击打印标题或表头按钮。2.在弹出的页面设置对话…

opencv(二) 图片处理

opencv 图片处理 opencv 图片像素操作 取像素点操作设置像素点取图片块分离&#xff0c;合并 b, g, r import numpy as np import cv2 as cvimg cv.imread(/Users/guoyinhuang/Desktop/G77.jpeg)# 获取像素值 px img[348, 120] # 0 是y, 1 是x print(px)blue img[100, 1…

【NLP】语言模型和迁移学习

10.13 Update&#xff1a;最近新出了一个state-of-the-art预训练模型&#xff0c;传送门&#xff1a;李入魔&#xff1a;【NLP】Google BERT详解​zhuanlan.zhihu.com1. 简介长期以来&#xff0c;词向量一直是NLP任务中的主要表征技术。随着2017年底以及2018年初的一系列技术突…

TCPIP传送协议

以下代码实现在客户端查询成绩&#xff08;数据库在服务器端&#xff09;: 客户端&#xff1a; static void Main(string[] args) { string str null; while (str ! Convert.ToString(0)) { Console.WriteLine("…