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();
改進(jìn)(更通用)的方法:
- 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ù)讀取器前進(jìn)到下一個結(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,);
進(jìn)行動態(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();
- }
【編輯推薦】