麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

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。在這種情況下,仍返回多個結果集,但每個結果集只有一行。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚州欧美在线 | 国产乱free国语对白 | 狠狠干天天 | 一区二区网| 亚洲视频在线观看免费视频 | 亚洲国产高清一区 | 久久精品观看 | 91成人免费在线视频 | 国产激情网 | 亚洲av一级毛片特黄大片 | 久久精品一二三区白丝高潮 | 91av在线影院 | 国产伦精品一区二区三区在线 | 黄污在线观看 | 日本中文字幕电影在线观看 | 少妇一级淫片免费放4p | 天使萌一区二区三区免费观看 | 国产一国产一级毛片视频在线 | hd极品free性xxx护士人 | 成年性羞羞视频免费观看无限 | chengrenzaixian| 成人在线视频播放 | 成人福利视频在线观看 | 中文字幕在线看第二 | 免费激情网址 | 国产一国产精品一级毛片 | 国产午夜精品久久久久婷 | av电影院在线观看 | 国产亚洲精品成人 | 亚洲无马在线观看 | 中文字幕亚洲情99在线 | 草久在线观看视频 | 欧美精品v国产精品v日韩精品 | 斗破苍穹在线免费 | 亚洲一级成人 | 国产影院在线观看 | 亚洲国产精品久久久久久久久久 | 91九色视频在线观看 | 欧美日本亚洲视频 | 亚洲片在线| 欧美成人高清视频 |