C#数据库开发相关技巧汇总(转)

转载自:http://www.csharpwin.com/csharpspace/7098r1147.shtml

C#数据库开发一.用SqlConnection连接SQLServer

1.加入命名空间


  1. usingSystem.Data.SqlClient; 

    2.连接数据库


  1. SqlConnection myConnection=new SqlConnection();  
  2. myConnection.ConnectionString="userid=sa;password=sinofindb;initialcatalog=test;"+
  3. "datasource=127.0.0.1;ConnectTimeout=30";  
  4. myConnection.Open(); 

 

改进(更通用)的方法:

 


  1. string MySqlConnection="userid=sa;password=sinofindb;Database=test;" +
  2. "datasource=127.0.0.1;ConnectTimeout=30";  
  3. SqlConnection myConnection=new SqlConnection(MySqlConnection);  
  4. myConnection.Open(); 

 

C#数据库开发二。用OleDbConnection连接

 

    1.加入命名空间

 

   usingSystem.Data.OleDb;

 

    2.连接sqlserver

 


  1. string MySqlConnection="Provider=SQLOLEDB;DataSource=localhost;" +
  2. "InitialCatalog=test;IntegratedSecurity=SSPI;";  
  3. SqlConnection myConnection=new SqlConnection(MySqlConnection);  
  4. myConnection.Open(); 

 

    3.连接Access(可通过建立.udl文件获得字符串)

 

    string MySqlConnection="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\db2000.mdb; PersistSecurityInfo=False;"

 

    4.连接Oracle(也可通过OracleConnection连接)

 

    string MySqlConnection="Provider=MSDAORA;DataSource=db;userid=sa;password=sinofindb";

 

    C#数据库开发三.创建Command对象

 

    1.SqlCommand构造函数

 

    ①初始化SqlCommand类的新实例。public SqlCommand();

 

    SqlCommand myCommand=new SqlCommand();

 

    ②初始化具有查询文本的SqlCommand类的新实例。public SqlCommand(string);

 


  1. String mySelectQuery="SELECT *FROM mindata";  
  2. SqlCommand myCommand=new SqlCommand(mySelectQuery); 

 

    ③初始化具有查询文本和SqlConnection的SqlCommand类实例。

 


  1. PublicSqlCommand(string,SqlConnection);  
  2. String mySelectQuery="SELECT *FROM mindata";  
  3. string myConnectString="userid=sa;password=;database=test;server=mySQLServer";  
  4. SqlConnection myConnection=new SqlConnection(myConnectString); 
  5.  SqlCommand myCommand=new SqlCommand(mySelectQuery,myConnection);  

 

 

 

    ④初始化具有查询文本、SqlConnection和Transaction的SqlCommand类实例。

 


  1. public SqlCommand(string,SqlConnection,SqlTransaction);  
  2. SqlTransaction myTrans=myConnection.BeginTransaction();  
  3. String mySelectQuery="SELECT *FROM mindata";  
  4. string myConnectString="userid=sa;password=;database=test;server=mySQLServer";  
  5. SqlConnection myConnection=new SqlConnection(myConnectString);  
  6. SqlCommand myCommand=new SqlCommand(mySelectQuery,myConnection,myTrans); 

 

    2.建立SqlCommand与SqlConnection的关联。

 

    myCommand.Connection=myConnection;

 

    或者:SqlCommand myCommand=myConnection.CreateCommand;

 

    3.设置SqlCommand的查询文本。

 

    myCommand.CommandText="SELECT *FROM mindata";

 

    或者第2种构造:SqlCommand myCommand=new SqlCommand(mySelectQuery);

 

    给SqlCommand对象提供两个查询字符串,每个查询字符串访问不同的表,返回不同的结果集。

 

    两个查询语句用分号分隔。

 

    4.执行命令。

 

    ExecuteReader     返回一行或多行     ExecuteNonQuery     对Connection执行Transact-SQL语句并返回受影响的行数(int)     ExecuteScalar     返回单个值(如一个聚合值).返回结果集中第一行的第一列。忽略额外的列或行     ExecuteXmlReader     将CommandText发送到Connection并生成一个XmlReader对象。

 


  1. SqlDataReader myReader=myCommand.ExecuteReader();  
  2. 或SqlDataReader myReader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);  
  3.  
  4. while(myReader.Read())//循环读取数据  
  5. {  
  6. Console.WriteLine(myReader.GetString(0));//获取指定列的字符串形式的值  
  7. Console.WriteLine(myReader.Getvalue(1));//获取以本机格式表示的指定列的值  
  8. }  
  9. CommandText="selectcount (*) as NumberOfRegions from region";  
  10. Intcount=(int)myCommand.ExecuteScalar(); 

 

    关于OleDbCommand对象的使用。

 

C#数据库开发四.DataReader的使用

 

    1.遍历结果集

 

    while(myReader.Read())

 

    Console.WriteLine("\t{0}\t{1}",myReader.GetInt32(0),myReader.GetString(1));

 

    myReader.Close();

 

    2.使用序数索引器。

 


  1. while(myReader.Read())  
  2. Console.WriteLine("\t{0}\t{1}",myReader[0].ToString(),myReader[1].ToString());  
  3. myReader.Close(); 

 

    3.使用列名索引器。

 


  1. while(myReader.Read())  
  2. Console.WriteLine("\t{0}\t{1}",myReader["code].ToString(),myReader["name"].ToString());  
  3. myReader.Close(); 

 

    4.使用类型访问器。

 

    public char GetChar(inti);获取指定列的单个字符串形式的值

 

    public DateTime GetDateTime(inti);获取指定列的DateTime对象形式的值

 

    public short GetInt16(inti);获取指定列的16位有符号整数形式的[C#]

 

    public string GetString(inti);获取指定列的字符串形式的值

 

    5.得到列信息。

 

    myReader.FieldCount获取当前行中的列数

 

    myReader.GetFieldType(序号)获取是对象的数据类型的Type

 

    myReader.GetDataTypeName(序号)获取源数据类型的名称

 

    myReader.GetName(序号)获取指定列的名称

 

    myReader.GetOrdinal(序号)在给定列名称的情况下获取列序号

 

    6.得到数据表的信息。

 

    myReader.GetSchemaTable()返回一个DataTable

 

    7.操作多个结果集。

 


  1. myReader.NextResult()使数据读取器前进到下一个结果集  
  2. do  
  3. {  
  4. while(myReader.Read())  
  5. Console.WriteLine("\t{0}\t{1}",myReader.GetInt32(0),myReader.GetString(1));  
  6. }  
  7. while(myReader.NextResult()); 

 

C#数据库开发五.DataAdapter

 

    1.创建SqlDataAdapter

 

    初始化SqlDataAdapter类的新实例。

 

    public SqlDataAdapter();

 

    将指定的SqlCommand作为SelectCommand属性,初始化SqlDataAdapter类的新实例。

 

    public SqlDataAdapter(SqlCommand);

 

    用selectcommand字符串和SqlConnection对象初始化SqlDataAdapter类的新实例。

 

    public SqlDataAdapter(string,SqlConnection);

 

    用selectcommand字符串和一个连接字符串初始化SqlDataAdapter类的新实例。

 

    public SqlDataAdapter(string,string);

 

    2.DataAdapter和SqlConnection,SqlCommand建立关联。

 

    1.DataAdapter在构造参数时建立

 

    2.SqlDataAdapter adapter=new SqlDataAdapter();

 

    adapter.SelectCommand=new SqlCommand(query,conn);

 

    3.DataAdapter.Fill()方法。

 

    在DataSet中添加或刷新行以匹配使用DataSet名称的数据源中的行,并创建一个名为“Table”的DataTable。

 

    public override int Fill(DataSet);

 

    在DataSet中添加或刷新行以匹配使用DataSet和DataTable名称的数据源中的行。

 

    public int Fill(DataSet,string);

 

    在DataSet的指定范围中添加或刷新行以匹配使用DataSet和DataTable名称的数据源中的行。

 

    public int Fill(DataSet,int,int,string);

 

    在DataTable中添加或刷新行以匹配使用DataTable名称的数据源中的行。

 

    public int Fill(DataTable);

 

    在DataTable中添加或刷新行以匹配使用指定DataTable和IDataReader名称的数据源中的行。

 

    protected virtual int Fill(DataTable,IDataReader);

 

    在DataTable中添加或刷新行以匹配使用DataTable名称、指定的SQLSELECT语句和CommandBehavior的数据源中的行。

 

    protected virtual int Fill(DataTable,IDbCommand,CommandBehavior);

 

C#数据库开发六.DataTable类

 

    七.DataColumn类

 

    八.DataRow类

 

    九.DataSet类     1.创建DataSet对象

 

    初始化DataSet类的新实例。

 

    public DataSet();

 

    用给定名称初始化DataSet类的新实例。

 

    public DataSet(string);

 

    2.用DataAdapter填充DataSet

 

    DataSet myds=new DataSet();

 

    adapter.fill(myds)

 

    adapter.fill(myds,”表名”);用一个表去填充DataSet.

 

十.DataTableCollection类。表示DataSet的表的集合。

 

    DataTableCollectiond tc=ds.Tables;

 

    DataTabletable=dtc[“表名”];

 

    Strings trExpr="id>5";

 

    Strings trSort="nameDESC";

 

    DataRow[] foundRows=customerTable.Select(strExpr,strSort,);

 

    进行动态的筛选和排序。

 

    DataTable.Select()方法:获取DataRow对象的数组,

 

    ①获取所有DataRow对象的数组。

 

    public DataRow[] Select();

 

    ②按主键顺序(如没有主键,则按照添加顺序),获取与筛选条件相匹配的所有DataRow对象的数组。

 

    public DataRow[] Select(string);

 

    ③获取按照指定的排序顺序且与筛选条件相匹配的所有DataRow对象的数组。

 

    public DataRow[] Select(string,string);

 

    ④获取与排序顺序中的筛选器以及指定的状态相匹配的所有DataRow对象的数组。

 

    public DataRow[] Select(string,string,DataViewRowState);

 

十一。DataView类:是DataTable内容的动态视图。

 

    1.创建对象

 

    初始化DataView类的新实例。

 

    public DataView();

 

    用指定的DataTable初始化DataView类的新实例。

 

    public DataView(DataTable);

 

    用指定的DataTable、RowFilter、Sort和DataViewRowState初始化DataView类的新实例。

 


  1. public DataView(DataTable,string,string,DataViewRowState);  
  2. DataView myview=newDataView(ds.Tables["Suppliers"],  
  3. "id>5",  
  4. "nameDESC",  
  5. DataViewRowState.CurrentRows); 

 

    2.得到DataView的行数据。

 


  1. foreach(DataRowView myrowview in myview)  
  2. {   
  3. Console.Write(myrowview+"\t");  
  4. Console.WriteLine();  
  5. }

Leave a Reply

Your email address will not be published. Required fields are marked *