C#數(shù)據(jù)庫開發(fā)相關(guān)技巧匯總
C#數(shù)據(jù)庫開發(fā)一.用SqlConnection連接SQLServer
1.加入命名空間
- usingSystem.Data.SqlClient;
 
2.連接數(shù)據(jù)庫
- SqlConnectionmyConnection=newSqlConnection();
 - myConnection.ConnectionString="userid=sa;password=sinofindb;initialcatalog=test;datasource=127.0.0.1;ConnectTimeout=30";
 - myConnection.Open();
 
改進(更通用)的方法:
- stringMySqlConnection="userid=sa;password=sinofindb;Database=test;datasource=127.0.0.1;ConnectTimeout=30";
 - SqlConnectionmyConnection=newSqlConnection(MySqlConnection);
 - myConnection.Open();
 
C#數(shù)據(jù)庫開發(fā)二。用OleDbConnection連接
1.加入命名空間
usingSystem.Data.OleDb;
2.連接sqlserver
- stringMySqlConnection="Provider=SQLOLEDB;DataSource=localhost;InitialCatalog=test;IntegratedSecurity=SSPI;";
 - SqlConnectionmyConnection=newSqlConnection(MySqlConnection);
 - myConnection.Open();
 
3.連接Access(可通過建立.udl文件獲得字符串)
stringMySqlConnection="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\db2000.mdb;
PersistSecurityInfo=False;
4.連接Oracle(也可通過OracleConnection連接)
stringMySqlConnection="Provider=MSDAORA;DataSource=db;userid=sa;password=sinofindb";
C#數(shù)據(jù)庫開發(fā)三.創(chuàng)建Command對象
1.SqlCommand構(gòu)造函數(shù)
①初始化SqlCommand類的新實例。publicSqlCommand();
SqlCommandmyCommand=newSqlCommand();
②初始化具有查詢文本的SqlCommand類的新實例。publicSqlCommand(string);
- StringmySelectQuery="SELECT*FROMmindata";
 - SqlCommandmyCommand=newSqlCommand(mySelectQuery);
 
③初始化具有查詢文本和SqlConnection的SqlCommand類實例。
- PublicSqlCommand(string,SqlConnection); StringmySelectQuery="SELECT*FROMmindata"; stringmyConnectString="userid=sa;password=;database=test;server=mySQLServer"; SqlConnectionmyConnection=newSqlConnection(myConnectString); SqlCommandmyCommand=newSqlCommand(mySelectQuery,myConnection);
 
④初始化具有查詢文本、SqlConnection和Transaction的SqlCommand類實例。
- publicSqlCommand(string,SqlConnection,SqlTransaction);
 - SqlTransactionmyTrans=myConnection.BeginTransaction();
 - StringmySelectQuery="SELECT*FROMmindata";
 - stringmyConnectString="userid=sa;password=;database=test;server=mySQLServer";
 - SqlConnectionmyConnection=newSqlConnection(myConnectString);
 - SqlCommandmyCommand=newSqlCommand(mySelectQuery,myConnection,myTrans);
 
2.建立SqlCommand與SqlConnection的關(guān)聯(lián)。
myCommand.Connection=myConnection;
或者:SqlCommandmyCommand=myConnection.CreateCommand;
3.設(shè)置SqlCommand的查詢文本。
myCommand.CommandText="SELECT*FROMmindata";
或者第2種構(gòu)造:SqlCommandmyCommand=newSqlCommand(mySelectQuery);
給SqlCommand對象提供兩個查詢字符串,每個查詢字符串訪問不同的表,返回不同的結(jié)果集。
兩個查詢語句用分號分隔。
4.執(zhí)行命令。
ExecuteReader
返回一行或多行
ExecuteNonQuery
對Connection執(zhí)行Transact-SQL語句并返回受影響的行數(shù)(int)
ExecuteScalar
返回單個值(如一個聚合值).返回結(jié)果集中第一行的第一列。忽略額外的列或行
ExecuteXmlReader
將CommandText發(fā)送到Connection并生成一個XmlReader對象。
- SqlDataReadermyReader=myCommand.ExecuteReader();
 - 或SqlDataReadermyReader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);
 - while(myReader.Read())//循環(huán)讀取數(shù)據(jù)
 - {
 - Console.WriteLine(myReader.GetString(0));//獲取指定列的字符串形式的值
 - Console.WriteLine(myReader.Getvalue(1));//獲取以本機格式表示的指定列的值
 - }
 - CommandText="selectcount(*)asNumberOfRegionsfromregion";
 - Intcount=(int)myCommand.ExecuteScalar();
 
關(guān)于OleDbCommand對象的使用。
C#數(shù)據(jù)庫開發(fā)四.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.使用類型訪問器。
publiccharGetChar(inti);獲取指定列的單個字符串形式的值
publicDateTimeGetDateTime(inti);獲取指定列的DateTime對象形式的值
publicshortGetInt16(inti);獲取指定列的16位有符號整數(shù)形式的[C#]
publicstringGetString(inti);獲取指定列的字符串形式的值
5.得到列信息。
myReader.FieldCount獲取當(dāng)前行中的列數(shù)
myReader.GetFieldType(序號)獲取是對象的數(shù)據(jù)類型的Type
myReader.GetDataTypeName(序號)獲取源數(shù)據(jù)類型的名稱
myReader.GetName(序號)獲取指定列的名稱
myReader.GetOrdinal(序號)在給定列名稱的情況下獲取列序號
6.得到數(shù)據(jù)表的信息。
myReader.GetSchemaTable()返回一個DataTable
7.操作多個結(jié)果集。
- myReader.NextResult()使數(shù)據(jù)讀取器前進到下一個結(jié)果集
 - do
 - {
 - while(myReader.Read())
 - Console.WriteLine("\t{0}\t{1}",myReader.GetInt32(0),myReader.GetString(1));
 - }
 - while(myReader.NextResult());
 
C#數(shù)據(jù)庫開發(fā)五.DataAdapter
1.創(chuàng)建SqlDataAdapter
初始化SqlDataAdapter類的新實例。
publicSqlDataAdapter();
將指定的SqlCommand作為SelectCommand屬性,初始化SqlDataAdapter類的新實例。
publicSqlDataAdapter(SqlCommand);
用selectcommand字符串和SqlConnection對象初始化SqlDataAdapter類的新實例。
publicSqlDataAdapter(string,SqlConnection);
用selectcommand字符串和一個連接字符串初始化SqlDataAdapter類的新實例。
publicSqlDataAdapter(string,string);
2.DataAdapter和SqlConnection,SqlCommand建立關(guān)聯(lián)。
1.DataAdapter在構(gòu)造參數(shù)時建立
2.SqlDataAdapteradapter=newSqlDataAdapter();
adapter.SelectCommand=newSqlCommand(query,conn);
3.DataAdapter.Fill()方法。
在DataSet中添加或刷新行以匹配使用DataSet名稱的數(shù)據(jù)源中的行,并創(chuàng)建一個名為“Table”的DataTable。
publicoverrideintFill(DataSet);
在DataSet中添加或刷新行以匹配使用DataSet和DataTable名稱的數(shù)據(jù)源中的行。
publicintFill(DataSet,string);
在DataSet的指定范圍中添加或刷新行以匹配使用DataSet和DataTable名稱的數(shù)據(jù)源中的行。
publicintFill(DataSet,int,int,string);
在DataTable中添加或刷新行以匹配使用DataTable名稱的數(shù)據(jù)源中的行。
publicintFill(DataTable);
在DataTable中添加或刷新行以匹配使用指定DataTable和IDataReader名稱的數(shù)據(jù)源中的行。
protectedvirtualintFill(DataTable,IDataReader);
在DataTable中添加或刷新行以匹配使用DataTable名稱、指定的SQLSELECT語句和CommandBehavior的數(shù)據(jù)源中的行。
protectedvirtualintFill(DataTable,IDbCommand,CommandBehavior);
C#數(shù)據(jù)庫開發(fā)六.DataTable類
七.DataColumn類
八.DataRow類
九.DataSet類
1.創(chuàng)建DataSet對象
初始化DataSet類的新實例。
publicDataSet();
用給定名稱初始化DataSet類的新實例。
publicDataSet(string);
2.用DataAdapter填充DataSet
DataSetmyds=newDataSet();
adapter.fill(myds)
adapter.fill(myds,”表名”);用一個表去填充DataSet.
十.DataTableCollection類。表示DataSet的表的集合。
DataTableCollectiondtc=ds.Tables;
DataTabletable=dtc[“表名”];
StringstrExpr="id>5";
StringstrSort="nameDESC";
DataRow[]foundRows=customerTable.Select(strExpr,strSort,);
進行動態(tài)的篩選和排序。
DataTable.Select()方法:獲取DataRow對象的數(shù)組,
①獲取所有DataRow對象的數(shù)組。
publicDataRow[]Select();
②按主鍵順序(如沒有主鍵,則按照添加順序),獲取與篩選條件相匹配的所有DataRow對象的數(shù)組。
publicDataRow[]Select(string);
③獲取按照指定的排序順序且與篩選條件相匹配的所有DataRow對象的數(shù)組。
publicDataRow[]Select(string,string);
④獲取與排序順序中的篩選器以及指定的狀態(tài)相匹配的所有DataRow對象的數(shù)組。
publicDataRow[]Select(string,string,DataViewRowState);
十一。DataView類:是DataTable內(nèi)容的動態(tài)視圖。
1.創(chuàng)建對象
初始化DataView類的新實例。
publicDataView();
用指定的DataTable初始化DataView類的新實例。
publicDataView(DataTable);
用指定的DataTable、RowFilter、Sort和DataViewRowState初始化DataView類的新實例。
- publicDataView(DataTable,string,string,DataViewRowState);
 - DataViewmyview=newDataView(ds.Tables["Suppliers"],
 - "id>5",
 - "nameDESC",
 - DataViewRowState.CurrentRows);
 
2.得到DataView的行數(shù)據(jù)。
- foreach(DataRowViewmyrowviewinmyview)
 - {
 - for(inti=0;i
 - Console.Write(myrowview+"\t");
 - Console.WriteLine();
 - }
 
【編輯推薦】















 
 
 

 
 
 
 