国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SqlHelper詳細講解

2024-07-21 02:53:09
字體:
來源:轉載
供稿:網友
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration;using System.Data.SqlClient;using System.Data;namespace Itcast.Cn{    public static class SqlHelper    {        PRivate static readonly string conStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;        //執行增刪改的        public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] pms)        {            using (SqlConnection con = new SqlConnection(conStr))            {                using (SqlCommand cmd = new SqlCommand(sql, con))                {                    cmd.CommandType = cmdType;                    if (pms != null)                    {                        cmd.Parameters.AddRange(pms);                    }                    con.Open();                    return cmd.ExecuteNonQuery();                }            }        }        //封裝一個執行返回單個值的方法        public static object ExecuteScalar(string sql, CommandType cmdType, params SqlParameter[] pms)        {            using (SqlConnection con = new SqlConnection(conStr))            {                using (SqlCommand cmd = new SqlCommand(sql, con))                {                    cmd.CommandType = cmdType;                    if (pms != null)                    {                        cmd.Parameters.AddRange(pms);                    }                    con.Open();                    return cmd.ExecuteScalar();                }            }        }        //返回SqlDataReader對象的方法        public static SqlDataReader ExecuteReader(string sql, CommandType cmdType, params SqlParameter[] pms)        {            SqlConnection con = new SqlConnection(conStr);            using (SqlCommand cmd = new SqlCommand(sql, con))            {                cmd.CommandType = cmdType;                if (pms != null)                {                    cmd.Parameters.AddRange(pms);                }                try                {                    con.Open();                    return cmd.ExecuteReader(CommandBehavior.CloseConnection);                }                catch (Exception)                {                    con.Close();                    con.Dispose();                    throw;                }            }        }        //封裝一個返回DataTable的方法        public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] pms)        {            DataTable dt = new DataTable();            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))            {                adapter.SelectCommand.CommandType = cmdType;                if (pms != null)                {                    adapter.SelectCommand.Parameters.AddRange(pms);                }                adapter.Fill(dt);            }            return dt;        }        //封裝一個帶事務的執行Sql語句的方法        public static void ExecuteNonQueryTran(List<SqlAndParameter> list)        {            using (SqlConnection con = new SqlConnection(conStr))            {                using (SqlCommand cmd = con.CreateCommand())                {                    con.Open();                    using (SqlTransaction trans = con.BeginTransaction())                    {                        cmd.Transaction = trans;                        try                        {                            foreach (var SqlObject in list)                            {                                cmd.CommandText = SqlObject.Sql;                                if (SqlObject.Parameters != null)                                {                                    cmd.Parameters.AddRange(SqlObject.Parameters);                                }                                cmd.CommandType = SqlObject.CmdType;                                cmd.ExecuteNonQuery();                                cmd.Parameters.Clear();                            }                            trans.Commit();                        }                        catch (Exception)                        {                            trans.Rollback();                            throw;                        }                    }                }            }        }    }    public class SqlAndParameter    {        public string Sql        {            get;            set;        }        public SqlParameter[] Parameters        {            get;            set;        }        public CommandType CmdType        {            get;            set;        }    }

}

CommandType 枚舉。用來枚舉所有的命令類型,默認是 CommandType.Text,用于執行SQL語句。如果我們把SqlCommand 的 CommandText 設置為一個存儲過程名,則應該指字 CommandType 為 CommandType.StoredProcedure。摘自msdn:CommandType 屬性設置為 TableDirect 時,應將 CommandText 屬性設置為要訪問的表的名稱。 如果已命名的任何表包含任何特殊字符,那么用戶可能需要使用轉義符語法或包括限定字符。當您調用“執行”(Execute) 方法之一時,將返回命名表的所有行和列。為了訪問多個表,請使用逗號分隔的列表(沒有空格或空白),其中包含要訪問的多個表的名稱。當 CommandText 屬性命名多個表時,返回指定表的聯接。只有用于 OLE DB 的 .NET Framework 數據提供程序才支持 TableDirect。 當 CommandType 設置為 TableDirect 時,不支持對多個表的訪問。 ExecuteNonQuery 針對 Connection 執行 SQL 語句并返回受影響的行數。 返回值 受影響的行數。 備注 您可以使用 ExecuteNonQuery 來執行目錄操作(例如查詢數據庫的結構或創建諸如表等的數據庫對象),或通過執行 UPDATE、INSERT 或 DELETE 語句,在不使用 DataSet 的情況下更改數據庫中的數據。 雖然 ExecuteNonQuery 不返回任何行,但映射到參數的任何輸出參數或返回值都會用數據進行填充。 對于 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數。對于所有其他類型的語句,返回值為 -1。如果發生回滾,返回值也為 -1。ExecuteScalar 執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略額外的列或行。   返回值   結果集中第一行的第一列或空引用(如果結果集為空)。使用 ExecuteScalar 方法從數據源中檢索單個值(例如一個聚合值)。與使用 ExecuteReader 方法,然后使用OleDbDataReader 返回的數據執行生成單個值所需的操作相比,此操作需要的代碼較少。CommandBehavior 枚舉由 .NET Compact Framework 支持 CloseConnection在執行該命令時,如果關閉關聯的 DataReader 對象,則關聯的 Connection 對象也將關閉。 由 .NET Compact Framework 支持 Default此查詢可能返回多個結果集。執行查詢可能會影響數據庫狀態。Default 不設置 CommandBehavior 標志,因此調用 ExecuteReader(CommandBehavior.Default) 在功能上等效于調用 ExecuteReader()。 由 .NET Compact Framework 支持 KeyInfo此查詢返回列和主鍵信息。  當 KeyInfo 用于命令執行時,提供程序將為現有主鍵列和時間戳列的結果集附加額外的列。當使用 KeyInfo 時,用于 SQL Server 的 .NET Framework 數據提供程序將在要執行的語句前加上 SET FMTONLY OFF 和 SET NO_BROWSETABLE ON。用戶應該注意潛在的副作用,例如對 SET FMTONLY ON 語句的使用產生的干擾。有關更多信息,請參見“SQL Server 聯機叢書”。由 .NET Compact Framework 支持 SchemaOnly查詢僅返回列信息。當使用 SchemaOnly 時,用于 SQL Server 的 .NET Framework 數據提供程序將在要執行的語句前加上 SET FMTONLY ON。 由 .NET Compact Framework 支持 Sequentialaccess提供一種方法,以便 DataReader 處理包含帶有大二進制值的列的行。SequentialAccess 不是加載整行,而是使 DataReader 將數據作為流來加載。然后可以使用 GetBytes 或 GetChars 方法來指定開始讀取操作的字節位置以及正在返回的數據的有限的緩沖區大小。 當指定 SequentialAccess 時,盡管無需讀取每個列,但是需要按照列的返回順序讀取它們。一旦已經讀過返回的數據流中某個位置的內容,就不能再從 DataReader 中讀取該位置或該位置之前的數據。當使用 OleDbDataReader 時,可重新讀取當前列的值,直到讀過它。當使用 SqlDataReader 時,一次只能讀取一個列值。由 .NET Compact Framework 支持 SingleResult查詢返回一個結果集。 由 .NET Compact Framework 支持 SingleRow查詢應返回一行。執行查詢可能會影響數據庫的狀態。一些 .NET Framework 數據提供程序可能(但不要求)使用此信息來優化命令的性能。用 OleDbCommand 對象的 ExecuteReader 方法指定 SingleRow 時,用于 OLE DB 的 .NET Framework 數據提供程序使用 OLE DB IRow 接口(如果可用)執行綁定。否則,它使用 IRowset 接口。如果您的 SQL 語句應該只返回一行,則指定 SingleRow 還可以提高應用程序性能。在執行返回多個結果集的查詢時,可以指定 SingleRow。在這種情況下,仍返回多個結果集,但每個結果集只有一行。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淳化县| 皮山县| 临沂市| 延长县| 区。| 嘉鱼县| 纳雍县| 岱山县| 水富县| 青龙| 泊头市| 玉山县| 大田县| 张家港市| 信阳市| 建昌县| 嘉善县| 于田县| 南平市| 屏山县| 商丘市| 隆昌县| 石泉县| 长治市| 青阳县| 南阳市| 大石桥市| 南通市| 莱西市| 辛集市| 泊头市| 集贤县| 黄骅市| 河池市| 定远县| 富顺县| 吕梁市| 桂阳县| 普定县| 迁西县| 东山县|