| 一.用SqlConnection連接SQL?Server 1..加入命名空間 using?System.Data.SqlClient; 2.連接數(shù)據(jù)庫(kù) SqlConnection?myConnection?=?new?SqlConnection(); myConnection.ConnectionString?=?"user?id=sa;password=sinofindb;initial?catalog=test;data?source=127.0.0.1;Connect?Timeout=30"; myConnection.Open(); 改進(jìn)(更通用)的方法: string?MySqlConnection="user?id=sa;password=sinofindb;Database?=test;data?source=127.0.0.1;Connect?Timeout=30"; SqlConnection?myConnection?=?new?SqlConnection(MySqlConnection); myConnection.Open(); 二。用OleDbConnection連接 1.加入命名空間 using?System.Data.OleDb; ? 2.連接sql?server string?MySqlConnection="Provider=SQLOLEDB;Data?Source=localhost;Initial?Catalog=test;Integrated?Security=SSPI;"; SqlConnection?myConnection?=?new?SqlConnection(MySqlConnection); myConnection.Open(); ? 3.連接Access(可通過(guò)建立.udl文件獲得字符串) string?MySqlConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source=c:\db2000.mdb; Persist?Security?Info=False; 4.連接Oracle(也可通過(guò)OracleConnection連接) string?MySqlConnection="Provider=MSDAORA;Data?Source=db;?user?id=sa;password=sinofindb"; ? 三.創(chuàng)建Command對(duì)象 1.SqlCommand?構(gòu)造函數(shù) ①初始化?SqlCommand?類的新實(shí)例。public?SqlCommand(); SqlCommand?myCommand?=?new?SqlCommand(); ? ②初始化具有查詢文本的?SqlCommand?類的新實(shí)例。public?SqlCommand(string); String?mySelectQuery?=?"SELECT?*?FROM?mindata"; SqlCommand?myCommand?=?new?SqlCommand(mySelectQuery); ③初始化具有查詢文本和?SqlConnection?的SqlCommand類實(shí)例。 Public?SqlCommand(string,?SqlConnection); String?mySelectQuery?=?"SELECT?*?FROM?mindata"; string?myConnectString?=?"user?id=sa;password=;database=test;server=mySQLServer"; SqlConnection?myConnection?=?new?SqlConnection(myConnectString); SqlCommand?myCommand?=?new?SqlCommand(mySelectQuery,myConnection); ? ④初始化具有查詢文本、SqlConnection?和?Transaction?的?SqlCommand?類實(shí)例。 public?SqlCommand(string,?SqlConnection,?SqlTransaction); SqlTransaction?myTrans?=?myConnection.BeginTransaction(); String?mySelectQuery?=?"SELECT?*?FROM?mindata"; string?myConnectString?=?"user?id=sa;password=;database=test;server=mySQLServer"; SqlConnection?myConnection?=?new?SqlConnection(myConnectString); SqlCommand?myCommand?=?new?SqlCommand(mySelectQuery,myConnection,?myTrans); ? 2.建立SqlCommand與SqlConnection的關(guān)聯(lián)。 myCommand.Connection?=?myConnection; 或者:SqlCommand?myCommand?=?myConnection.CreateCommand; ? 3.設(shè)置SqlCommand的查詢文本。 myCommand.CommandText?=?"SELECT?*?FROM?mindata"; 或者第2種構(gòu)造:SqlCommand?myCommand?=?new?SqlCommand(mySelectQuery); 給SqlCommand對(duì)象提供兩個(gè)查詢字符串,每個(gè)查詢字符串訪問(wèn)不同的表,返回不同的結(jié)果集。 兩個(gè)查詢語(yǔ)句用分號(hào)分隔。 ? 4.?執(zhí)行命令。 ExecuteReader ?返回一行或多行 ? ExecuteNonQuery ?對(duì)?Connection?執(zhí)行?Transact-SQL?語(yǔ)句并返回受影響的行數(shù)(int) ? ExecuteScalar ?返回單個(gè)值(如一個(gè)聚合值).返回結(jié)果集中第一行的第一列。忽略額外的列或行 ? ExecuteXmlReader ?將?CommandText?發(fā)送到?Connection?并生成一個(gè)?XmlReader?對(duì)象。 ? ? SqlDataReader?myReader?=?myCommand.ExecuteReader(); 或SqlDataReader?myReader?=?myCommand.ExecuteReader(CommandBehavior.CloseConnection); ???while(myReader.Read())?//循環(huán)讀取數(shù)據(jù) ???{ ??????Console.WriteLine(myReader.GetString(0));//?獲取指定列的字符串形式的值 ??????Console.WriteLine(myReader.?GetValue(1));//?獲取以本機(jī)格式表示的指定列的值 ????} ? CommandText?=?"select?count(*)?as?NumberOfRegions?from?region"; Int?count?=?(int)?myCommand.ExecuteScalar(); ? 關(guān)于OleDbCommand對(duì)象的使用。 ? 四.DataReader的使用 1.遍歷結(jié)果集 while?(myReader.Read()) ??Console.WriteLine("\t{0}\t{1}",?myReader.GetInt32(0),?myReader.GetString(1)); myReader.Close(); ? 2.使用序數(shù)索引器。 while?(myReader.Read()) ??Console.WriteLine("\t{0}\t{1}",?myReader[0].ToString(),?myReader[1].ToString()); myReader.Close(); 3.使用列名索引器。 while?(myReader.Read()) ??Console.WriteLine("\t{0}\t{1}",?myReader["code].ToString(),?myReader["name"].ToString()); myReader.Close(); ? 4.使用類型訪問(wèn)器。 public?char?GetChar(int?i);?獲取指定列的單個(gè)字符串形式的值 public?DateTime?GetDateTime(int?i);?獲取指定列的?DateTime?對(duì)象形式的值 public?short?GetInt16(int?i);?獲取指定列的?16?位有符號(hào)整數(shù)形式的[C#] public?string?GetString(int?i);?獲取指定列的字符串形式的值 5.得到列信息。 myReader.FieldCount?????獲取當(dāng)前行中的列數(shù) myReader.GetFieldType(序號(hào))???獲取是對(duì)象的數(shù)據(jù)類型的?Type myReader.GetDataTypeName(序號(hào))??獲取源數(shù)據(jù)類型的名稱 myReader.GetName(序號(hào))?????獲取指定列的名稱 myReader.GetOrdinal(序號(hào))???在給定列名稱的情況下獲取列序號(hào) 6.得到數(shù)據(jù)表的信息。 myReader.GetSchemaTable()???返回一個(gè)?DataTable ? 7.操作多個(gè)結(jié)果集。 myReader.NextResult()?????使數(shù)據(jù)讀取器前進(jìn)到下一個(gè)結(jié)果集 do { ??while?(myReader.Read()) ??Console.WriteLine("\t{0}\t{1}",?myReader.GetInt32(0),?myReader.GetString(1)); } while(myReader.NextResult()); 五.DataAdapter 1.創(chuàng)建SqlDataAdapter 初始化?SqlDataAdapter?類的新實(shí)例。 public?SqlDataAdapter(); 將指定的?SqlCommand?作為SelectCommand?屬性,初始化?SqlDataAdapter?類的新實(shí)例。 public?SqlDataAdapter(SqlCommand); 用?selectcommand字符串?和?SqlConnection對(duì)象初始化SqlDataAdapter?類的新實(shí)例。 public?SqlDataAdapter(string,?SqlConnection); 用?selectcommand字符串?和?一個(gè)連接字符串?初始化SqlDataAdapter?類的新實(shí)例。 public?SqlDataAdapter(string,?string); 2.DataAdapter和SqlConnection,SqlCommand建立關(guān)聯(lián)。 ??1.DataAdapter在構(gòu)造參數(shù)時(shí)建立 ??2.SqlDataAdapter?adapter?=?new?SqlDataAdapter(); ?????adapter.SelectCommand?=?new?SqlCommand(query,?conn); 3.DataAdapter.Fill()方法。 在?DataSet?中添加或刷新行以匹配使用?DataSet?名稱的數(shù)據(jù)源中的行,并創(chuàng)建一個(gè)名為“Table”的?DataTable。 public?override?int?Fill(DataSet); 在?DataSet?中添加或刷新行以匹配使用?DataSet?和?DataTable?名稱的數(shù)據(jù)源中的行。 ?public?int?Fill(DataSet,?string); 在?DataSet?的指定范圍中添加或刷新行以匹配使用?DataSet?和?DataTable?名稱的數(shù)據(jù)源中的行。 ?public?int?Fill(DataSet,?int,?int,?string); 在?DataTable?中添加或刷新行以匹配使用?DataTable?名稱的數(shù)據(jù)源中的行。 ?public?int?Fill(DataTable); 在?DataTable?中添加或刷新行以匹配使用指定?DataTable?和?IDataReader?名稱的數(shù)據(jù)源中的行。 ?protected?virtual?int?Fill(DataTable,?IDataReader); 在?DataTable?中添加或刷新行以匹配使用?DataTable?名稱、指定的?SQL?SELECT?語(yǔ)句和?CommandBehavior?的數(shù)據(jù)源中的行。 ?protected?virtual?int?Fill(DataTable,?IDbCommand,?CommandBehavior); ? 六.DataTable?類 七.DataColumn?類 八.DataRow?類 ? 九.DataSet?類 1.創(chuàng)建DataSet?對(duì)象 初始化?DataSet?類的新實(shí)例。 public?DataSet(); ? 用給定名稱初始化?DataSet?類的新實(shí)例。 public?DataSet(string); ? 2.用DataAdapter填充DataSet ???DataSet?myds=new?DataSet(); adapter.fill(myds) adapter.fill(myds,”表名”);??用一個(gè)表去填充DataSet. ? 十.?DataTableCollection?類。????表示?DataSet?的表的集合。 DataTableCollection?dtc?=?ds.Tables; DataTable?table?=?dtc[“表名”]; String?strExpr?=?"id?>?5"; String?strSort?=?"name?DESC"; DataRow[]?foundRows?=?customerTable.Select(?strExpr,?strSort,); 進(jìn)行動(dòng)態(tài)的篩選和排序。 DataTable.Select()?方法?:??獲取?DataRow?對(duì)象的數(shù)組, ①獲取所有?DataRow?對(duì)象的數(shù)組。 public?DataRow[]?Select(); ? ②按主鍵順序(如沒(méi)有主鍵,則按照添加順序),獲取與篩選條件相匹配的所有?DataRow?對(duì)象的數(shù)組。 public?DataRow[]?Select(string); ③獲取按照指定的排序順序且與篩選條件相匹配的所有?DataRow?對(duì)象的數(shù)組。 public?DataRow[]?Select(string,?string); ④獲取與排序順序中的篩選器以及指定的狀態(tài)相匹配的所有?DataRow?對(duì)象的數(shù)組。 public?DataRow[]?Select(string,?string,?DataViewRowState); ? 十一。DataView?類?:?是DataTable內(nèi)容的動(dòng)態(tài)視圖。 1.??創(chuàng)建對(duì)象 初始化?DataView?類的新實(shí)例。 ??public?DataView(); 用指定的?DataTable?初始化?DataView?類的新實(shí)例。 ??public?DataView(DataTable); 用指定的?DataTable、RowFilter、Sort?和?DataViewRowState?初始化?DataView?類的新實(shí)例。 ??public?DataView(DataTable,?string,?string,?DataViewRowState); DataView?myview?=?new?DataView(ds.Tables["Suppliers"],?"id?>?5",?"name?DESC", DataViewRowState.CurrentRows); 2?.得到DataView的行數(shù)據(jù)。 ???foreach?(DataRowView?myrowview?in?myview) ???{ ?????for?(int?i?=?0;?i?<?myview.Table.Columns.Count;?i++) ????????Console.Write(myrowview?[i]?+?"\t"); ?????Console.WriteLine(); ???} |