來源:http://m.survivalescaperooms.com/yangcaogui/archive/2012/06/09/2537086.html#9
目錄:
一丶簡單的介紹下ADO.NET
了解System.Data命名空間下我們常用的一些類:

1 ①System.Data → DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumnMapping,DataTableMapping 2 ②System.Data.Coummon → 各種數(shù)據(jù)訪問類的基類和接口 3 ③System.Data.SqlClient → 對(duì)Sql Server進(jìn)行操作的數(shù)據(jù)訪問類 4 主要有: a) SqlConnection → 數(shù)據(jù)庫連接器 5 b) SqlCommand → 數(shù)據(jù)庫命名對(duì)象 6 c) SqlCommandBuilder → 生存SQL命令 7 d) SqlDataReader → 數(shù)據(jù)讀取器 8 e) SqlDataAdapter → 數(shù)據(jù)適配器,填充DataSet 9 f) SqlParameter → 為存儲(chǔ)過程定義參數(shù)10 g) SqlTransaction → 數(shù)據(jù)庫事物

二丶SqlConnection(連接對(duì)象)
1.連接字符串
基本語法:數(shù)據(jù)源(Data Source)+數(shù)據(jù)庫名稱(Initial Catalog)+用戶名(User ID)+密碼(PassWord)(這種方式比較安全)!
推薦文章 :SQL Server 連接字符串和身份驗(yàn)證,你必須知道的ADO.NET(三) 連接字符串,你小覷了嗎?,SQL Server 2008連接字符串寫法大全,連接字符串有很多的寫法,最保險(xiǎn)的寫法可以借助“SqlConnectionStringBuilder”類,它提供了全面的連接字符串的屬性,以至于減少出錯(cuò)率(相關(guān)屬性查MSDN),還有大多數(shù)連接字符串都寫在配置文件里面了!
2.創(chuàng)建連接對(duì)象
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(){DataSource = "",InitialCatalog = "",UserID = "",Password = ""};SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
1 SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder()2 {3 DataSource = "",4 InitialCatalog = "",5 UserID = "",6 Password = ""7 };8 SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
3.打開和關(guān)閉連接對(duì)象(使用Using來關(guān)閉連接)

1 using(SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))2 {3 connection.Open();4 connection.Close();5 }1 using(SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))2 {3 connection.Open();4 connection.Close();5 }關(guān)于連接池的文章:你必須知道的ADO.NET(五) 細(xì)說數(shù)據(jù)庫連接池(寫的還真不賴啊),頂...
三丶SqlCommand(命令對(duì)象)
1.實(shí)例化的時(shí)候默認(rèn)初始化的四個(gè)屬性

2.創(chuàng)建命令對(duì)象
使用連接對(duì)象的“CreateCommand()”方法創(chuàng)建命令對(duì)象,也可以使用new來實(shí)例化對(duì)象!
1 SqlCommand command = connection.CreateCommand(); //這種方式比較好,也可以自己實(shí)例化一個(gè)對(duì)象!
3.幾個(gè)重要屬性
①CommandText:獲取或設(shè)置要對(duì)數(shù)據(jù)源執(zhí)行的 Transact-SQL 語句、表名或存儲(chǔ)過程!
②CommandType:設(shè)置你執(zhí)行的SQL語句是存儲(chǔ)過程還是T-SQL(是一個(gè)枚舉)!

③Parameters:設(shè)置你T-SQL中你需要用到的參數(shù)(后面會(huì)講到),是一個(gè)“SqlParametersCollection”類型,這個(gè)屬性很重要,是你通過代碼給SQL語句傳遞參數(shù)的途徑,所以記住語法,記住一些使用規(guī)則講對(duì)編碼有很大的幫助!
4.幾個(gè)重要的方法(相信大家熟悉的不能再熟悉了)
①ExecuteNonQuery:返回是影響的行數(shù)(int),主要執(zhí)行更新,添加,刪除等操作!
②ExecuteReader:執(zhí)行SQL或存儲(chǔ)過程,返回的是SqlDataReader類型,主要用來查詢!
★ 這邊注意這個(gè)方法的重載 CommandBehaviour 枚舉,成員如下:

1 command.ExecuteReader(CommandBehavior.CloseConnection); //在執(zhí)行讀取之后會(huì)自動(dòng)關(guān)閉連接對(duì)象
③ExecuteScalar:返回執(zhí)行結(jié)果集中的第一行第一列,如果沒有數(shù)據(jù),則返回NULL!
Note:因?yàn)榭赡軙?huì)返回“Null”值,所以需要對(duì)結(jié)果進(jìn)行判斷,如下:

1 object my = cmd.ExecuteScalar();2 if (object.Equals(my,null)) //可以使用Equals進(jìn)行Null值的判斷,易讀性強(qiáng)3 Console.WriteLine("Not Data");4 else5 Console.WriteLine("Yes");1 object my = cmd.ExecuteScalar();2 if (object.Equals(my,null)) //可以使用Equals進(jìn)行Null值的判斷,易讀性強(qiáng)3 Console.WriteLine("Not Data");4 else5 Console.WriteLine("Yes");④CreateParameter:創(chuàng)建SqlParameter實(shí)例
1 SqlParameter para = cmd.CreateParameter() //此方法適合SQL語句中只有一個(gè)參數(shù)的情況!
推薦文章:你必須知道的ADO.NET(六) 談?wù)凜ommand對(duì)象與數(shù)據(jù)檢索
你必須知道的ADO.NET(七) Wow!Command對(duì)象高級(jí)應(yīng)用
四丶SqlParameter(Sql參數(shù))
1.幾個(gè)重要的屬性
ParameterName: 設(shè)置參數(shù)名
Value: 給參數(shù)設(shè)置值
Size: 設(shè)置參數(shù)字節(jié)最大大小(以字節(jié)為但為)
SqlDbType: 參數(shù)在SQL中的類型

SqlParameter paras = new SqlParameter() { ParameterName = "@name", Value = 10, SqlDbType = SqlDbType.Int, Size = 4 };

1 SqlParameter paras = new SqlParameter()2 {3 ParameterName = "@name",4 Value = 10,5 SqlDbType = SqlDbType.Int,6 Size = 47 };
2.命令對(duì)象添加參數(shù)集合的幾種方法
①AddWithValue
②Add
③AddRange
推薦文章:SqlParameter的作用與用法,代碼如下:

1 using (SqlConnection connection = new SqlConnection("")) 2 { 3 SqlCommand command = connection.CreateCommand(); 4 command.CommandText = ""; 5 6 //可以使用這種方式添加多個(gè)參數(shù),不過方式不夠好 7 command.Parameters.Add("@name", SqlDbType.NVarChar).Value = "yang"; //第一種方式 8 command.Parameters.Add("@age", SqlDbType.Int).Value = 888; 9 command.Parameters.Add("@address", SqlDbType.NVarChar, 100).Value = "Jiang Su";10 11 //這種方式直接給定參數(shù)名和參數(shù)就可以了,可操作性比較差12 command.Parameters.AddWithValue("@name", "yang");13 command.Parameters.AddWithValue("@age", 888).SqlDbType = SqlDbType.Int;14 command.Parameters.AddWithValue("@address", "Jiang su").SqlDbType = SqlDbType.NVarChar;15 16 //直接使用參數(shù)集合添加你需要的參數(shù),推薦這種寫法17 SqlParameter[] parameters = new SqlParameter[]18 {19 new SqlParameter("@name",SqlDbType.NVarChar,100){Value = "yang"},20 new SqlParameter("@age",SqlDbType.Int,2){Value = 888},21 new SqlParameter("@address",SqlDbType.NVarChar,20){Value = "Jiang Su"}, 22 };23 command.Parameters.AddRange(parameters); //參數(shù)也可以是一個(gè)Array數(shù)組,如果采用數(shù)組參數(shù)代碼的可讀性和擴(kuò)展性就不是那么好了24 25 //當(dāng)我們把參數(shù)都添加好之后,會(huì)生成一個(gè)“SqlParameterCollection”集合類型,相當(dāng)于參數(shù)的集合26 //那么我們就可以對(duì)這些參數(shù)進(jìn)行修改和移除了27 //說穿了“SqlParameterCollection”內(nèi)部其實(shí)是一個(gè)List<SqlParameter>的集合,只是它里面的復(fù)雜度比較高,考慮的很全面28 command.Parameters[0].Value = "hot girl";29 command.Parameters[0].Size = 200;30 }
3.說說“SqlParameterCollection”,參數(shù)集合
上面添加的“SqlParameter”參數(shù)都被添加到了“SqlParameterCollection”集合中去了,所以我們才能夠?qū)λM(jìn)行讀取和修改!
4.定義適當(dāng)?shù)膮?shù)屬性獲取存儲(chǔ)過程的返回值(return) →Direction = Paramet
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注