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.pswp.cn/news/389073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389073.shtml
英文地址,請注明出處:http://en.pswp.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("…