⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ado.txt

📁 为UltraEdit破解版本
💻 TXT
📖 第 1 页 / 共 2 页
字号:
2.5 执行事务处理
    private void SQLCommandTransction(string sServer, string sDB)
       {
       SqlConnection cn = new sqlConnection("SERVER="+sServer+";INTERGATED SECURITY=Ture";DATABASE="+sDB);
       SqlTransaction trans;
       //start a local transaction
       cn.Open();        //注意 ,连接必须在BeginTransaction()方法前打开
       trans=cn.BeginTransaction();
       cmd.Connection = cn;
       cmd.Transaction = trans;
       try
         {
         //insert a row Transaction
         cmd.CommandText="INSERT INTO Department VALUES(100,'Transaction 100')";
         //This will result in an error
         cmd.CommandText="INSERT INTO Department VALUES(100,'Transaction 101')";
         cmd.ExecuteNonQuery();
         trans.Commit();
          }
        catch(Exception ex)
          {
            MessageBox.Show(ex.Message);
            trans.Rollback();    //此方法回滚事务处理
          }
          finally
          { cn.Close(); }
       }


3.1  使用SqlDataReader检索快速的,只向前的结果集
    private void SQLReaderForward(string sServer, string sDB)
      {//set up the connection and command
       Cursor.Current=Cusor.WaitCursor;
       SqlConnection cn = new sqlConnection("SERVER="+sServer+";INTERGATED SECURITY=Ture";DATABASE="+sDB);
       sqlCommand cmd = new sqlCommand("select customerID,commpanyName from Customers"+"where country ='USA',cn");
       cmd.CommandType=CommandType.Text;
       SqlDataReader rdr;
       try
        {
         cn.Open();   //先连接
         rdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);//再实例化rdr,用cmd的ExecuteReader()方法
                 //ExecuteReader()方法使用CommandBehavior枚举,其成员CloseConnection是指关闭SqlDataReader对象时,关闭相关的connection 对象cn.
 	 lstResults.Items.Clear();  //列表框清空
         while(rdr.Read())
           {
             lstResults.Items.Add(rdr["CustomerID"].ToString()+'\t'+rdr["CompanyName"].ToString());
           }
         rdr.Close();
         }
        catch(Exception ex)
          {
            Cursor.Current=Cusor.Default;
            MessageBox.Show(ex.Message);
           }
           cn.Close();
	   Cursor.Current=Cusor.Default;
       }
 说明:在此事例(从NorthWind数据库中检索相关信息)中,先创建一个连接对象cn,它使用集成的安全性关联目标数据库,接着创      建一个新的命令对象cmd,构造函数把其Command属性设为SQL语句;
     同时明白显示的关闭所有的ADO.NET对象非常重要.

3.2 返回多个结果集

      private void SQLReaderMultipleRS(string sServer, string sDB)
      {//set up the connection and command
       Cursor.Current=Cusor.WaitCursor;
       SqlConnection cn = new sqlConnection("SERVER="+sServer+";INTERGATED SECURITY=Ture";DATABASE="+sDB);
       sqlCommand cmd = new sqlCommand("select CategoryID,CategoryName from Categories;"+"select ProductID,ProduceName from products",cn");  //多个SQL语句要分号(;)分开!
       cmd.CommandType=CommandType.Text;
       SqlDataReader rdr;
       try
        {  //open the connection and create the reader
         cn.Open();   /
         rdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
          //loop through all the results sets
 	 lstResults.Items.Clear();
 	 bool bMoreResults=true;  //赋true,确保至少做一次循环
 	 while(bMoreResults)
 	   {  lstResults.Items.Add(rdr.GetName(0)+'\t'+rdr.GetName(1));
 	      while(rdr.Read())
                  {  //把列名写道列表框中,在明处加制表符,使列表框整齐排列
                    lstResults.Items.Add(rdr.GetInt32(0)+'\t'+rdr.GetString(1));
                  }
                  bMoreResults=rdr.NextResult();  //此方法:若还有一个结果集,NextResult()方法就返回true;否则返回flase,退出while循环
                  rdr.Close();
            }
         catch(Exception ex)
          {
            Cursor.Current=Cusor.Default;
            MessageBox.Show(ex.Message);
           }
           cn.Close();
	   Cursor.Current=Cusor.Default;
       }


---080327晚上
   DataSet是ADO.NET的核心,它是一个保存在内存中的数据库,标号斯组成数据表的一组相关数据,约束规则和表关系信息.
   因为DataSet完全独立于数据源,所以在DataSet对象在中对数据的修改不会影响数据源,除非把这些修改内容返回到数据源中.
   ...图片...
   创建新的DataSet对象有几种不同的方式,所用的创建方法取决于要创建的DataSet的类型.
   可以通过调用DataSet构造函数来创建DataSet,所创建的DataSet 对象为一个空对象.当采用该方法创建时,可以指定DataSet名称,如果不指定则默认为NewDataSet.
   也可以用DataSet.Copy方法创建DataSet,复制已有的DataSet.此方法会把原先DataSet的模式或关系结构,所有的数据行,行版本和行状态信息都复制到新的DataSet中.

4.1
      private void CreateDataSet(string sDSName)
      {
         DataSet ds = new DataSet(sDSName);
         //使用构造函数创建一个空的DataSet对象实例ds.
      }

4.2
      private void CreateDataSet(string sDSName)
      {
         DataSet ds = new DataSet();
         ds.Tables.Add(sDSName);  //用DataTablesCollection.Add方法创建的DataTable,并把它添加到DataSet的Table集合中.
      }

4.3
      private void CreateDataColumn(string sDSName)
      {
        DataTable dt =new DataTable();
        DataColumn dc =new DataColumn(sDSName,System.Type.GetType("System.String"));  //创建一个类型为DataColumn的字符串,并把列名设置为传递进来的字符串变量.
        dc.AllowDBNull = false;
        dc.Maxlength = 50;
        dt.Columns.Add(dc);  //把名位dc的 DataColumn对象添加到表 的Columns集合中
        dt.Columns.Add("RowCount",System.Type.GetType("System.Int32"),"Count("+dc.ColumnName+")");
		 //上面这句...使用DataColumnCollection.Add 方法创建一个名为RowCount的新的DataColumn对象,并添加到DataTable中.
        DataRow dr =dt.NewRow();  //使用NewRow()方法创建一个新的DataRow对象 dr,然后把数据放在DataRow指定的列中
        dr[sDSName] ="Michael";
        dt.Rows.Add(dr);   //最后把名为dr的DataRow对象实例添加到DataTable的Rows集合中.

      }
      注意:在把行添加到表中,会计算count表达式,并使RowCount列的数据自动更新为1,表示已经把一行添加到DataTable中了.


4.4
      private void CreateDataConsraint(string sUCName,string sPKName)
      {  DataTable dt =new DataTable();
         DataColumn dc =new dt.Columns.Add(UCName);
         dt.Columns.Add(sPKName);
         UniqueConstraint uc =new UniqueConstraint(dc);
         dt.Constraint.Add(uc);
         DataColumn[] dtkey =new DataColumn[1];
         dtkey[0] =dt.Columns[sPKName];  //把DataColumn数组dtkey设为名为sPKName的DataColumn对象实例
         dt.PrimaryKey =dtkey;  //把DataColumn数组dtkey 设为DataTable的主键

      }
说明:例程开头传递两个包含新的DataColumn名称的字符串变量.用Add方法和两个传递进来的字符串变量创建两个DataColumn,并添加到dt中;
   接着用UniqueConstraint构造函数和名为dc的DataColumn参数创建uc;然后使用Add方法添加到DataTable中.

4.5
      private void CreateDataRelation(string sDRelName)
      {  DataSet dsSales =new DataSet("Sales");
         DataTable   dtStaff =dsSales.Tables.Add("Products");
         DataTable   dtInvoices =dsSales.Tables.Add("Invoices");
         DataColumn dcParent =dtStaff.Columns.Add("productID");
         DataColumn dcChild =dtInvoiecs.Columns.Add("productID");
         DataRelation drelSales =new DataRelation(sDRelName,dcPart,dcChild,true);
         dsSales.Relations.Add(drelSales);

       }
说明:该事例创建一个名为productID的DataColumn,并添加到连个DataTable的Columns集合中;接着把传递近来的字符串变量作为DataRelation名,利用两个DataTable中用于建立表之间关系的DataColumn,创建一个DataRelation对象实例drelSales;最后添加到DataSet中.

5.1  用SqlDataAdapter类填充DataSet
       private void FillDataSetSql(string sServer, string sDB,string sTable)
       {   //次方法对应的三个参数分别用作SQL SERVER系统名称,数据库名称,表名称.
        SqlConnection Sqlcn = new sqlConnection("SERVER="+sServer+";INTERGATED SECURITY=Ture";DATABASE="+sDB);
        SqlCommand cmdSelect = new SqlCommand("SELECT * FROM"+sTable,Sqlcn);
        SqlDataAdapter SqlDA = new SqlDataAdapter();
        SqlDA.SelectCommand=cmdSelect;
        DataSet ds =new DataSet();
        try
          {
             SqlDA.Fill(ds,sTable);
          }
        catch(Exception ex)
          {
             MessageBox.Show("Fill SqlDataAdapter erreo::"+ex.Tostring());
          }
        grdResults.DataSorce =ds; //DataGrid控件
        grdResults.DataMember =sTable; //其DataMember属性设为表,并显示给用户

        }
说明:创建 SqlConnection对象实例的ConnectionString属性设为构造函数参数;而 SqlCommand对象的CommandText属性设为一个SQL Select语句,且把Connection属性设为前面创建的Sqlcn对象实例;
     创建SqlDataAdapter对象实例,并把它的SelectCommand属性设为SqlCommand对象,接着创建空的DataSet对象,在Try-Catch中用Fill 方法填充;用该方法是,若连接每打开,它会自动打开与之相关联的连接,如果Fill 方法打开了连接,也会在填充完DataSet后自动关闭连接.      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -