日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

【017】◀▶ C#学习(九) - ADO.NET

發布時間:2023/11/29 C# 107 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【017】◀▶ C#学习(九) - ADO.NET 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《C#入門經典(中文第四版)》在程序中訪問數據庫學習筆記

---------------------------------------------------------------------------------------------------------

●·● 目錄:

A0 …………?System.Data.SqlClient 命名空間

A1 …………?SqlConnection 類
A2 …………?SqlCommand 類(增、刪、改、查代碼)
A3 …………?SqlDataReader 類
A4 …………?SqlParameter 類
  ※ 參考:SQLHelper 語句?
A5 ………… SqlDataAdapter 類
A6 ………… System.Data 命名空間
A7 …………?DataTable 類
A8 …………?DataSet 類
A9 …………?DataTableCollection 類
G1 …………?DataRow 類

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A0個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● System.Data.SqlClient 命名空間

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A1個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● SqlConnection 類

1. 表示 SQL Server 數據庫的一個打開的連接。無法繼承此類。

2.SqlConnection 屬性:

  • ConnectionString:獲取或設置用于打開 SQL Server 數據庫的字符串。
  • ConnectionTimeout:獲取在嘗試建立連接時終止嘗試并生成錯誤之前所等待的時間。?
  • Database:獲取當前數據庫或連接打開后要使用的數據庫的名稱。
  • DataSource:獲取要連接的 SQL Server 實例的名稱。?

3. SqlConnection 方法:

  • ChangePassword:將連接字符串中指示的用戶的 SQL Server 密碼更改為提供的新密碼。
  • Close:關閉與數據庫的連接。這是關閉任何打開連接的首選方法。
  • Open:使用 ConnectionString 所指定的屬性設置打開數據庫連接。?
  • CreateCommand:創建并返回一個與 SqlConnection 關聯的 SqlCommand 對象。
using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")) {conn.Open();conn.Close(); }

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A2個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·●?SqlCommand 類

1. 表示要對 SQL Server 數據庫執行的一個 Transact-SQL 語句或存儲過程。無法繼承此類。

2. SqlCommand 構造函數:

  • SqlCommand():初始化 SqlCommand 類的新實例。
  • SqlCommand(String):用查詢文本初始化 SqlCommand 類的新實例。
  • SqlCommand(String, SqlConnection):初始化具有查詢文本和 SqlConnection 的 SqlCommand 類的新實例。
  • SqlCommand(String, SqlConnection, SqlTransaction):使用查詢文本、一個 SqlConnection 以及 SqlTransaction 來初始化 SqlCommand 類的新實例。

3. SqlCommand 屬性:

  • CommandText: 獲取或設置要對數據源執行的 Transact-SQL 語句或存儲過程。
  • CommandTimeout:獲取或設置在終止執行命令的嘗試并生成錯誤之前的等待時間。?
  • CommandType:獲取或設置一個值,該值指示如何解釋 CommandText 屬性。
    ?? CommandType 枚舉
    • StoredProcedure:存儲過程的名稱。
    • TableDirect:表的名稱。
    • Text:SQL 文本命令。
      SqlCommand cmd = new SqlCommand("login", conn);cmd.CommandType = CommandType.StoredProcedure; //這里采用存儲過程
  • Connection:獲取或設置 SqlCommand 的此實例使用的 SqlConnection。
  • Transaction:獲取或設置將在其中執行 SqlCommand 的 SqlTransaction。
  • Parameters:獲取 SqlParameterCollection。(SQL中的參數集合)
    • SqlParameterCollection 類
      ??????? Count:返回一個整數,其中包含 SqlParameterCollection 中元素的數目。 只讀。
      ???? ?? Item[Int32]:獲取指定索引處的 SqlParameter。
      ??? ? ? Item[String]:獲取具有指定名稱的 SqlParameter。
      ??? ? ? Add (SqlParameter):將指定的 SqlParameter 對象添加到 SqlParameterCollection 中。
      ???? ?? AddWithValue (String parameterName, Object value):將一個值添加到 SqlParameterCollection 的末尾。在執行此方法的時候,會直接將參數傳遞!
      ???? ?? Insert - 增(使用 Parameters & 直接利用文本
      cmd.CommandText = "Insert Into Table1(UserName, PassWord) Values(@UN, @PW)"; cmd.Parameters.AddWithValue("UN", textBox1.Text.Trim()); cmd.Parameters.AddWithValue("PW", textBox2.Text.Trim()); cmd.CommandText =String.Format("Insert into Table1(UserName, PassWord) Values('{0}', '{1}')",textBox1.Text.Trim(), textBox2.Text.Trim());

      ?? ? ?? Delete - 刪(使用 Parameters & 直接利用文本

      cmd.CommandText = "Delete From Table1 Where UserName = @UN"; cmd.Parameters.AddWithValue("UN", textBox3.Text.Trim()); cmd.CommandText = String.Format("Delete From Table1 Where UserName = '{0}'",textBox3.Text.Trim());

      ?? ???? Update - 改(使用 Parameters & 直接利用文本

      cmd.CommandText = "Update Table1 Set PassWord = @PW Where UserName = @UN"; cmd.Parameters.AddWithValue("PW", textBox5.Text.Trim()); cmd.Parameters.AddWithValue("UN", textBox4.Text.Trim()); cmd.CommandText = String.Format("Update Table1 Set PassWord = '{0}' Where UserName = '{1}'",textBox5.Text.Trim(), textBox4.Text.Trim());

      ? ????? Select - 查(使用 Parameters & 直接利用文本

      cmd.CommandText = "Select * From Table1 Where UserName = @UN"; cmd.Parameters.AddWithValue("UN", textBox6.Text.Trim()); cmd.CommandText = String.Format("Select * From Table1 Where UserName = '{0}'", textBox6.Text.Trim());
    • Clear:從 SqlParameterCollection 中移除所有 SqlParameter 對象。遍歷的時候要注意清理!
      private static void UpdateDemographics(Int32 customerID,string demoXml, string connectionString) {// Update the demographics for a store, which is stored in an xml column. string commandText = "UPDATE Sales.Store SET Demographics = @demographics "+ "WHERE CustomerID = @ID;";using (SqlConnection connection = new SqlConnection(connectionString)){SqlCommand command = new SqlCommand(commandText, connection);command.Parameters.Add("@ID", SqlDbType.Int);command.Parameters["@ID"].Value = customerID;// Use AddWithValue to assign Demographics.// SQL Server will implicitly convert strings into XML.command.Parameters.AddWithValue("@demographics", demoXml);} }

4. SqlCommand 方法:

  • Cancel: 嘗試取消 SqlCommand 的執行。
  • CreatParameter:創建 SqlParameter 對象的新實例。
  • EndExecuteNonQuery:完成 Transact-SQL 語句的異步執行。
  • ExecuteNonQuery:對連接執行 Transact-SQL 語句并返回受影響的行數。主要執行 Insert、Update、Delete 語句。 Console.WriteLine("請輸入用戶名:"); string username = Console.ReadLine(); Console.WriteLine("請輸入密碼:"); string password = Console.ReadLine(); using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True")) {conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "Insert into T_Users3(UserName,PassWord) values('" + username + "','" + password + "')";//等同于下面的表述cmd.CommandText = String.Format("Insert into T_Users3(UserName,PassWord) values('{0}','{1}')", username, password);cmd.ExecuteNonQuery();Console.WriteLine("插入成功!");Console.WriteLine("影響行數為:{0}行!",cmd.ExecuteNonQuery()); //返回值為int} }
  • ExecuteReader:將 CommandText 發送到 Connection 并生成一個 SqlDataReader。主要執行 Select 語句。
    • SqlDataReader:提供一種從 SQL Server 數據庫讀取行的只進流的方式。 此類不能被繼承。
      ??????? FieldCount:獲取當前行中的列數。
      ???????Item[Int32]:在給定列序號的情況下,獲取指定列的以本機格式表示的值。例如:reader[0]
      ???????Item[String]:在給定列名稱的情況下,獲取指定列的以本機格式表示的值。例如:reader["ID"]
      ???????HasRows:獲取一個值,該值指示 SqlDataReader 是否包含一行或多行。
      using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")) {conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "Select * From Table1";SqlDataReader reader = cmd.ExecuteReader();string str = "用戶名\t密碼\r\n";while(reader.Read()){str = String.Format("{0}{1}\t\t{2}\r\n", str, reader["UserName"], reader["PassWord"]);}richTextBox1.Text = str;}conn.Close(); }
  • ExecuteScalar:執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略其他列或行。 using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True")) {conn.Open();using (SqlCommand cmd = conn.CreateCommand()){//加入了 output inserted.Id 之后會返回最后插入的Idcmd.CommandText = "Insert into T_Users3(UserName,PassWord) output inserted.Id values('admin','888888')"; int i = Convert.ToInt32(cmd.ExecuteScalar());Console.WriteLine("插入成功!");Console.WriteLine("剛插入的為第{0}行!",i);} }

※ 參考:http://hi.baidu.com/asdfhxc/blog/item/3f0d95ad5d3966004a36d6bd.html

※ 參考:http://hi.baidu.com/asdfhxc/blog/item/c5ddcf6060eb974deaf8f8bf.html

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A3個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·●?SqlDataReader 類

1. 提供一種從 SQL Server 數據庫讀取行的只進流的方式。無法繼承此類?!具m合大數據量,每次傳入一行數據】

2. SqlDataReader 屬性:

  • Depth:獲取一個值,用于指示當前行的嵌套深度。
  • FieldCount: 獲取當前行中的列數。
  • HasRows:獲取一個值,該值指示 SqlDataReader 是否包含一行或多行。
  • IsClosed:檢索一個布爾值,該值指示是否已關閉指定的 SqlDataReader 實例。
  • Item:獲取以本機格式表示的列的值。
  • RecordsAffected:獲取執行 Transact-SQL 語句所更改、插入或刪除的行數。
  • VisibleFieldCount:獲取 SqlDataReader 中未隱藏的字段的數目。

3. SqlDataReader 方法:

  • GetInt32(int i):獲取指定列的 32 位有符號整數形式的值。
  • GetString(int i):獲取指定列的字符串形式的值。
    ?? 0 為第一列,1 為第二列,2 為第三列......
  • GetOrdinal(String name):在給定列名稱的情況下獲取列序號。
    ?? 獲得的值即為上面的0,1,2......
  • Read():使 SqlDataReader 前進到下一條記錄。
    using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True")) {conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "select * from T_Users3";using (SqlDataReader reader = cmd.ExecuteReader()){while (reader.Read()) //一條條地往下執行{//簡單判斷以字母開頭的UserName if (reader.GetString(1)[0] < 'z' && reader.GetString(1)[0] > 'A') {//通過PadRight,用空格將右側補齊Console.WriteLine(reader.GetInt32(reader.GetOrdinal("Id")).ToString().PadRight(5) + reader.GetString(reader.GetOrdinal("UserName")).Trim().PadRight(15) + reader.GetString(reader.GetOrdinal("PassWord")).PadRight(20)); } }}} }

    效果如下圖所示:

    //通過上面四個類,建立了一個驗證密碼的控制臺程序!Check it out!!!using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient;namespace ConsoleApplication1 {class Program{static void Main(string[] args){//vs內嵌數據庫,需加入此語句!string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\") ||dataDir.EndsWith(@"\bin\Release\")){dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;AppDomain.CurrentDomain.SetData("DataDirectory",dataDir);}//先建立數據庫,并加入測試的UserName和PassWord列!Console.WriteLine("請輸入用戶名:"); string username = Console.ReadLine();Console.WriteLine("請輸入密碼:"); string password = Console.ReadLine();using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){//注意這個地方的單引號,很容易出錯的!cmd.CommandText = "select * from T_Users where UserName = '" + username + "'"; using (SqlDataReader reader = cmd.ExecuteReader()) //查找上面的username!{if (reader.Read()) //存在則為true{//用戶名存在//在PassWord列中遍歷string dbpassword = reader.GetString(reader.GetOrdinal("PassWord")); //注意要去掉數據庫中字符串的空格,默認有空格的! if (password == dbpassword.Trim()) {Console.WriteLine("登陸成功!");}else{Console.WriteLine("登錄失敗!");}}else{Console.WriteLine("用戶名錯誤!");}}}}Console.ReadKey();}} }

    ?

    //簡單變形,達到上面的效果! Console.WriteLine("輸入用戶名:"); string username = Console.ReadLine(); Console.WriteLine("輸入密碼:"); string password = Console.ReadLine();using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True")) {conn.Open();using (SqlCommand cmd = conn.CreateCommand()){//用戶名正確,密碼可以用:”3' or '1' = '1“,也可以登錄成功!cmd.CommandText = "select count(*) from T_Users3 where UserName = '" + username + "' and PassWord = '" + password + "'";int i = Convert.ToInt32(cmd.ExecuteScalar());if (i > 0)Console.WriteLine("Login Succeed!");elseConsole.WriteLine("Login Failed!");} }

    ?

    //用 SqlCommand 類的 Parameters 屬性改寫! Console.WriteLine("輸入用戶名:"); string username = Console.ReadLine(); Console.WriteLine("輸入密碼:"); string password = Console.ReadLine();using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database2.mdf;Integrated Security=True;User Instance=True")) {conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "select count(*) from T_Users3 where UserName = @UserName and PassWord = @PassWord";cmd.Parameters.AddWithValue("UserName", username);cmd.Parameters.AddWithValue("PassWord", password);int i = Convert.ToInt32(cmd.ExecuteScalar());if (i > 0)Console.WriteLine("Login Succeed!");elseConsole.WriteLine("Login Failed!");} }

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A4個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·●?SqlParameter 類

1. 表示 SqlCommand 的參數,也可以是它到 DataSet 列的映射。無法繼承此類。
2. SqlParameter 構造函數:

  • SqlParameter (String, Object):用參數名稱和新 SqlParameter 的一個值初始化 SqlParameter 類的新實例。
  • SqlParameter (String, SqlDbType):用參數名稱和數據類型初始化 SqlParameter 類的新實例。
    ?? SqlDbType 枚舉:指定要用于 SqlParameter 中的字段和屬性的 SQL Server 特定的數據類型。
    • BigInt:Int64。
    • Binary:Byte 類型的 Array。

※ 建立通用的 SQL 查詢語句!

首先,新建一個 SQLHelper 類:

class SQLHelper{//執行查詢public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)  {using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = sql;foreach(SqlParameter parameter in parameters){cmd.Parameters.Add(parameter);}return cmd.ExecuteNonQuery();}}}//執行返回第一行第一列的內容public static object ExecuteScalar(string sql, params SqlParameter[] parameters)  {using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = sql;foreach (SqlParameter parameter in parameters){cmd.Parameters.Add(parameter);}return cmd.ExecuteScalar();}}}//執行返回內存中的表格public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)  {using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = sql;foreach (SqlParameter parameter in parameters){cmd.Parameters.Add(parameter);}DataSet dataset = new DataSet();SqlDataAdapter adapter = new SqlDataAdapter(cmd);adapter.Fill(dataset);DataTable table = dataset.Tables[0];return table;}}}}

然后,在程序中可以按照如下來調用,參數的個數可以從1個到無數個!

private void button2_Click(object sender, EventArgs e){SQLHelper.ExecuteNonQuery("insert into Table1(UserName,PassWord) values(@UserName,@PassWord)",new SqlParameter("UserName", textBox1.Text), new SqlParameter("PassWord", textBox2.Text));//實現數據的插入}private void button3_Click(object sender, EventArgs e){SQLHelper.ExecuteNonQuery("update Table1 set UserName = 'Mike',PassWord = 'love' where UserName = @UserName",new SqlParameter("UserName",textBox1.Text));//實現數據的更新}private void button4_Click(object sender, EventArgs e){DataTable table = SQLHelper.ExecuteDataTable("select * from Table1");for (int i = 0; i < table.Rows.Count;i++ ){DataRow row = table.Rows[i];MessageBox.Show(row["UserName"].ToString());//實現表格存儲到內存}}

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A5個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● SqlDataAdapter 類

1. 表示用于填充 DataSet 和更新 SQL Server 數據庫的一組數據命令和一個數據庫連接。無法繼承此類。

2. SqlDataAdapter 構造函數:

  • SqlDataAdapter (SqlCommand):初始化 SqlDataAdapter 類的新實例,用指定的 SqlCommand 作為 SelectCommand 的屬性。

3. SqlDataAdapter 屬性:

  • DeleteCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,以從數據集刪除記錄。
  • InsertCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,以在數據源中插入新記錄。
  • SelectCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,用于在數據源中選擇記錄。?
  • UpdateCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,用于更新數據源中的記錄。

4. SqlDataAdapter 方法:

  • Fill:填充 DataSet 或 DataTable。
    • Fill (DataSet):在 DataSet 中添加或刷新行以匹配使用 DataSet 名稱的數據源中的行,并創建一個名為“Table”的 DataTable
    • Fill (DataTable):在 DataSet 的指定范圍中添加或刷新行以匹配使用 DataSet、DataTable 和 IDataReader 名稱的數據源中的行。
  • Update:為 DataSet 中每個已插入、已更新或已刪除的行調用相應的 INSERT、UPDATE 或 DELETE 語句。
    • Update (DataRow[]):為指定的 DataRow 對象數組中每個已插入、已更新或已刪除的行調用相應的 INSERT、UPDATE 或 DELETE 語句。?
    • Update (DataSet):為指定 DataSet 中每個已插入、已更新或已刪除的行調用相應的 INSERT、UPDATE 或 DELETE 語句。
    • Update (DataTable):為指定 DataTable 中每個已插入、已更新或已刪除的行調用相應的 INSERT、UPDATE 或 DELETE 語句。

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A6個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● SqlCommandBuilder 類

1.?自動生成單表命令,用于將對 DataSet 所做的更改與關聯的 SQL Server 數據庫的更改相協調。無法繼承此類。

2. SqlCommandBuilder 構造函數:

  • SqlCommandBuilder ():初始化 SqlCommandBuilder 類的新實例。
  • SqlCommandBuilder (SqlDataAdapter):使用關聯的 SqlDataAdapter 對象初始化 SqlCommandBuilder 類的新實例。
using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "select * from Table1";SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataSet dataset = new DataSet();adapter.Fill(dataset);DataTable table = dataset.Tables[0];DataRow row = table.Rows[0];row["Name"] = "Matthew";SqlCommandBuilder builder = new SqlCommandBuilder(adapter); //傳入數據庫adapter.Update(dataset);MessageBox.Show("修改成功!");}}

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A7個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● System.Data 命名空間

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A7個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● DataTable 類

1. 表示一個內存中數據表

2. DataTable 屬性:

  • Columns:獲取屬于該表的列的集合?!?DataColumnCollection
    • DataColumnCollection 類表示 DataTable 的 DataColumn 對象的集合。
      • Count、Item、List。
      • Add、Clear、IndexOf、InsertAt、Remove、RemoveAt。
    • DataColumn 類:表示 DataTable 中的列的架構。
  • DataSet:獲取此表所屬的 DataSet。
  • Rows:獲取屬于該表的行的集合?!?DataRowCollection
    • DataRowCollection表示 DataTable 的行的集合。
      • Count:獲取該集合中 DataRow 對象的總數。
      • Item:作為列表獲取集合的項。(可以獲取每一個表的值,對應 DataRow 對象)
      • List:作為列表獲取集合的項。
      • Add(DataRow):將指定的 DataRow 添加到 DataRowCollection 對象中。
      • Clear:清除所有行的集合。
      • IndexOf:獲取指定 DataRow 對象的索引。
      • InsertAt:將新行插入到集合中的指定位置。
      • Remove:從集合中移除指定的 DataRow。
      • RemoveAt:從集合中移除指定索引處的行。
    • DataRow 類:表示 DataTable 中的一行數據。
  • TableName:獲取或設置 DataTable 的名稱。

3. DataTable 方法:

  • Clear:清除所有數據的 DataTable。
  • Copy:復制該 DataTable 的結構和數據。
  • NewRow:創建與該表具有相同架構的新 DataRow。(并不是在數據表中添加了新行)
    DataRow myRow = dt.NewRow(); myRow["學生"] = "小蟹"; myRow["英語"] = 82; myRow["數學"] = 93; myRow["自然"] = 39; myRow["美術"] = 39; dt.Rows.Add(myRow);

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A8個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● DataSet 類

1. 表示數據的內存中緩存。【適合小數據量的適合用,一次將所有放入內存】

2. DataSet 屬性:

  • Tables:獲取包含在 DataSet 中的表的集合?!?DataTableCollection
    • DataTableCollection 類:表示 DataSet 的表的集合。
      • Count獲取集合中的元素的總數。
      • Item[Int32]獲取位于指定索引位置的 DataTable 對象。
      • Item[String]獲取具有指定名稱的 DataTable 對象。

3. DataSet 方法:

  • Clear:通過移除所有表中的所有行來清除任何數據的 DataSet。
  • Copy:復制該 DataSet 的結構和數據。
  • Merge (DataRow ()):將 DataRow 對象數組合并到當前的 DataSet 中。
  • GetChanges:獲取 DataSet 的副本,該副本包含自上次加載以來或自調用 AcceptChanges 以來對該數據集進行的所有更改。
using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True")){conn.Open();using (SqlCommand cmd = conn.CreateCommand()){cmd.CommandText = "select * from Table1";DataSet dataset = new DataSet(); //相當于容器SqlDataAdapter adapter = new SqlDataAdapter(cmd); //執行SQL語句adapter.Fill(dataset); //傳入數據DataTable table = dataset.Tables[0]; //傳給Tablefor (int i = 0; i < table.Rows.Count;i++ ) //遍歷Table的Row{DataRow row = table.Rows[i]; //傳遞給每個Rowstring name = Convert.ToString(row["UserName"]); //取值MessageBox.Show(name);}}}

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第A9個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● DataTableCollection 類

1.?表示 DataSet 的表的集合。

2. DataTableCollection 屬性:

  • Count:獲取集合中的元素的總數。
  • Item (Int32):獲取位于指定索引位置的 DataTable 對象。
  • Item (String):獲取具有指定名稱的 DataTable 對象。
  • Item (String dataTableName, String dataTableNamespace):獲取指定命名空間中具有指定名稱的 DataTable 對象。
  • List:作為列表獲取集合的項。≡ ArrayList

3. DataTableCollection 方法:

  • Add:使用默認名稱創建一個新的 DataTable 對象,并將其添加到集合中。
  • Add (DataTable):將指定的 DataTable 添加到集合。
  • Add (String):使用指定名稱創建一個 DataTable 對象,并將其添加到集合中。
  • AddRange:將指定的 DataTable 數組的元素復制到集合末尾。
  • Clear:清除所有 DataTable 對象的集合。
  • Contains (String):獲取一個值,該值指示集合中是否存在具有指定名稱的 DataTable 對象。
  • CopyTo (DataTable(), Int32):將當前 DataTableCollection 的所有元素復制到一維 Array,從指定目標數組索引處開始。
  • IndexOf (DataTable):獲取指定 DataTable 對象的索引。
  • IndexOf (String):獲取具有指定名稱的 DataTable 對象的集合中的索引。
  • Remove (DataTable):從集合中移除指定的 DataTable 對象。
  • Remove (String):從集合中刪除具有指定名稱的 DataTable 對象。
  • RemoveAt:從集合中刪除具有指定名稱的 DataTable 對象。

--------------------------------------------------------------------------------------------------------------

???????? ?? ╔════════╗
╠════╣??? 第G1個??? ╠══════════════════════════════════════════════════╣
??????????? ╚════════╝

●·● DataRow 類

1. 表示 DataTable 中的一行數據。

2. DataRow 屬性:

  • Item (DataColumn):獲取或設置存儲在指定的 DataColumn 中的數據。
  • Item (Int32):獲取或設置存儲在由索引指定的列中的數據。
    ※ 使用:
    • row [0] 直接引用索引!
  • Item (String):獲取或設置存儲在由名稱指定的列中的數據。
    ※ 使用:
    • row ["UserName"] 直接引用列名稱!
  • Table:獲取該行擁有其架構的 DataTable。
  • RowState:獲取與該行和 DataRowCollection 的關系相關的當前狀態。
    ?? RowState 枚舉獲取 DataRow 對象的狀態。
    • Detached:該行已被創建,但不屬于任何 DataRowCollection。
    • Unchanged:該行自上次調用 AcceptChanges 以來尚未更改。
    • Added:該行已添加到 DataRowCollection 中,AcceptChanges 尚未調用。
    • Deleted:該行已通過 DataRow 的 Delete 方法被刪除。
    • Modified:該行已被修改,AcceptChanges 尚未調用。

3. DataRow 方法:

  • Delete:刪除 DataRow。
  • IsNull (DataColumn):獲取一個值,該值指示指定的 DataColumn 是否包含 null 值。
  • IsNull (Int32):獲取一個值,該值指示位于指定索引處的列是否包含 null 值。
  • IsNull (String):獲取一個值,該值指示指定的列是否包含 null 值。
  • SetNull:將指定的 DataColumn 的值設置為 null 值。

?

轉載于:https://www.cnblogs.com/alex-bn-lee/archive/2012/03/09/2387960.html

總結

以上是生活随笔為你收集整理的【017】◀▶ C#学习(九) - ADO.NET的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。