zoukankan      html  css  js  c++  java
  • ADO.Net基础复习(一)

    先前的一个SQL基础复习,有点粗枝大叶,不够具体、详细! 复习整理的,有很多属性和方法也没提到,只是说了一下常用的、基础的属性和方法!

    一切都归因于老师的教导有方!

    注意命名空间的引入:

    using System.Data;

    using System.Data. OleDb;       //用于OLEDB提供器支持的数据库

    using System.Data. Odbc;        //用于ODBC数据提供器支持的数据库的数据

    using System.Data.SqlClient;   //用于sql server数据库

    五大对象:

    Connection对象:建立与数据源的连接

    Command对象:检索,插入,删除,修改数据

    DataReader对象:只读,只向前的方式检索数据

    DataAdapter对象:数据库和数据集交互的桥梁

    DataSet对象:看成是驻留在内存中的一个小型数据库

    四种典型的连接类

    OdbcConnection

    OleDbConnection

    SqlConnection

    下面是以对SQL Server数据库的操作

    一、Connection对象:连接数据源   

    1.创建Connection对象:   

    string strCon="Data Source="user8\\SQLEXPRESS";Initial Catalog=studentdb";   

    SqlConnection myConnection=new SqlConnection(strCon);      

    2.属性:   

    (1).ConnectionString:指定连接数据库所需的值字符串格式的描述   

     Data Source=服务名; Initial Catalog=数据库名; User ID=用户名;        Password=密码;  //Integrated Security=True;  

    如: //SQL Server验证(注意转义字符:\),混合验证        

    ConnectionString="Data Source=user8\\SQLEXPRESS;Initial Catalog=studentdb; User ID=sa;Passward=pws;"   

      //windows验证

    ConnectionString="Data Source="user8\\SQLEXPRESS";Initial Catalog=studentdb;     Integrated Security=true;" 

    (2).State:只读属性,表示连接状态

    (3).Pooling:当为 true 时,请求新的连接时从池中取出,默认是true   

    (4).Connect Timeout( Connection Timeout):等待服务器响应的时间(单位:秒). 默认值:15。   

    (5).Provider:指打开数据库的驱动程序       

    3.方法:   

    (1).Open()  //根据连接串,打开连接   

    (2).Close() //关闭连接,释放资源

    4.事件:   

    (1).StateChange:此事件发生在连接的状态发生更改时   

    (2).InforMessage:此事件发生在从数据源返回信息性消息或警告时

    二、Command对象:执行相关命令    

    1.创建Command对象:    

    string strSql="";//SQL命令    

    (1).SqlCommand com=new SqlCommand(strSql,connection);    

    (2).SqlCommand com=connection.CreateCommand(strSql);    

    2.属性    

    (1).Connection:连接对象    

    (2).CommandText:要执行的SQL命令(SQL语句或存储过程)    

    (3).CommandType:默认值是Text,执行sql语句;并可设置为StoredProcedure,执行存储过程;TableDirect,指示所包含的是要访问的一个表的名称,从此表中将取出所有的列和行    

    (4).Parameters:Parameters集合    

    (5).Transaction:执行命令所在的事务       

    3.方法    

    (1).ExecuteNonQuery():返回执行命令受影响的行数,用于增删改操作

    (2).ExecuteScalar():返回执行sql语句的第一行第一列的值,用于查询单列值      

    (3).ExecuteReader ():返回一个DataReader对象[只向前、只读的结果集],用于查询多个数据    

    4.对于Parameters集合:    

    (1).属性:    

    <1>.Count属性:获取集合中参数的数目;    

    <2>.ParameterName:设置为SQL命令或存储过程中的参数名,如 “@EmployeeID”    

    <3>.SqlDbType:将该属性设置为参数的数据类型。    

    设置SqlParameter对象的数据类型的方法有以下两种。    

    在DbType枚举中选择一个值赋给DbType属性   

    在SqlDbType枚举中选择一个值赋给SqlDbType属性    

    <4>.Size:设置该属性以指示参数大小,例如字符串参数中字符的个数。     无需为已知且具有固定大小的数据类型(例如DbType.Int32)指定大小   

    <5>.Direction:设置该属性以指示该参数是只输入参数、只输出参数、双向参数 还是存储过程的返回值。

    该属性可设置为ParameterDirection枚举值之一:     ParameterDirection.Input、ParameterDirection.InputOutput、    ParameterDirection.Output或ParameterDirection.ReturnValue。默认方向为    ParameterDirection.Input    

    <6>.Value:对于只输入参数或双向参数而言,在运行该命令之前需要设置Value属性。

    对于只输出参数、双向参数和存储过程的返回值而言,在运行该命令之后可以检索Value属性    

    (2).方法:    

    <1>.Add():将参数添加到集合中;    

    <2>.Clear():从集合中移除所有参数;    

    <3>.Insert():将参数插入集合中的指定索引位置;    

    <4>.Remove():从集合中移除所指定的参数;    

    (3).创建参数对象:    

    strSQL="select  *  from CustomersTb where customerid=@customerid";       

    <1>.第一种方式:     cmd.Parameters.add(new SqlParameter("@customerid","ALFKI"));    

    <2>. 第二种方式 :    

    SqlParameter myPara=new SqlParameter();    

    myPara .ParameterName="@customerid";    

    myPara.value="ALFKI";   

    cmd.Parameters.Add(myPara);    

    5.对于ExecuteReader ()方法返回一个DataReader对象    

    (1).DataReader的创建:sqlDataReader rdr=cmd.ExecuteReader();    

    (2).属性:    

    <1>.FieldCount:字段数    

    <2>.HasRows:是否有数据未读    

    <3>.IsClosed:判断DataReader对象是否关闭    

    (3).方法:    

    <1>.GetValue():获取指定字段的值    

    <2>.GetOrdinal():获取字段的序号    

    <3>.Read():判断并读取下一条记录    

    <4>.Close():关闭对象    

    还有方法:GetInt32()\GetName()\NextResult()\IsDBNull()

    三、Adapter数据适配器对象:数据库和数据集的桥梁(断开环境)    

    DataAdapter是和数据集(DataSet)一起使用的对象,数据库与数据集之间起桥梁作用;专门为处理脱机数据而设计的。        

    1.创建DataAdapter对象:    

    string  strConn="Data Source=.;Initial Catalog=northwind;User ID=MyUserid;Password=myPassword;"    

    string strSql="select * from studentsTb";      

    (1).用查询串和连接字符串    

    SqlDataAdapter da=new SqlDataAdapter (strSql,strConn);    

    该方式会为每个SqlDataAdapter 创建一个新的SqlConnection对象,应适当选择。

    用查询串和连接对象 SqlConnection cn=new sqlConnection(strConn);                  

    (2).SqlDataAdapter da=new SqlDataAdapter (strSql,cn);     

    比较常用的方式    

    (3).使用SqlCommand对象    

    SqlCommand cmd=new SqlCommand(strSql,CN);             

    SqlDataAdapter da=new SqlDataAdapter (cmd);    

    已存在一个SqlCommand对象时使用.           

    2.属性:    

    (1).SelectCommand:在数据源中检索数据的数据命令    

    (2).InsertCommand:在数据源中插入数据的数据命令    

    (3).UpdateCommand:在数据源中更新数据的数据命令    

    (4).DeleteCommand:在数据源中删除数据的数据命令    

    (5).TableMappings:DataTableMapping对象的集合,决定DataSet中的行与数据源之间的关系    

    (6).UpdateBatchSize:决定批进程支持,指出在批处理中可执行的命令的数量

    3.方法:    

    (1).Fill()    

    <1>. Fill(DataSet) :DataSet结果集    

    <2>. Fill(DataTable): DataTable对象    

    <3>. Fill(Int32,Int32,params DataTable[]):开始记录索引 ,要填充的数据表的行数, DataTable对象   

    <4>.Fill(DataSet, Int32,Int32,String) :DataSet结果集,对象 开始记录的索引 ,要填充的数据集的行数 ,表名    

    (2).Update()

    4.对于TableMappings属性的应用    

    (1).先创建SqlDataAdapter对象    

    SqlDataAdapter adapter = CreateDataAdapter(conn, age);   

    DataSet ds = new DataSet();     

    (2).Mappings的用法   

    DataTableMapping mapping = adapter.TableMappings.Add("Table", "学生表");   

    mapping.ColumnMappings.Add("SNO", "学生编号");  

    mapping.ColumnMappings.Add("SName", "学生姓名");  

    mapping.ColumnMappings.Add("SDept", "所在院系");  

    mapping.ColumnMappings.Add("SClass", "所在班级");

    mapping.ColumnMappings.Add("SSex", "性别");   

    mapping.ColumnMappings.Add("SAge", "年龄");       

    (3).数据填充    

    adapter.Fill(ds);      

    (4).dataGridView绑定显示   

    dataGridView1.DataSource = ds.Tables["学生表"];//使用设置好的映射表名字  

    dataGridView1.Refresh();      

    5.Update()方法的应用    

    (1).数据填充    

    string strSql="SELECT * FROM STUDENT";     

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

    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

    adapter.Fill(ds);

    dataGridView1.DataSource = ds.Tables[0];      

    dataGridView1.Refresh();    

    更新时的代码:

    adapter.Update(ds);              

    MessageBox.Show("更新成功");       

    6.DataAdapter的事件    

    (1).Disposed:当调用Dispose释放组件的时候调用。    

    (2). FillError:在填充操作过程中出现错误时返回。    

    (3). RowUpdating:在对数据源执行命令前的Update过程中发生,试图进行更新,因此激发该事件。    

    (4). RowUpdated:在对数据源执行命令后的Update过程中发生,试图进行更新,因此激发该事件。

       

    四、DataSet:数据集

    1.DataSet 层次结构中的类:DataTable\DataColumn\DataRow\DataTableCollection\DataCloumnCollection\DataRowCollection\

    2.对于DataTable对象允许访问数据集中被访问的Rows集合,有如下方法: Add()\InsertAt()\Find()\Select()\Remove()

    对于DataTable对象允许访问数据集中被访问的Columns集合,有如下方法: Add()\InsertAt()\Find()\Select()\Remove()

    3.创建DataTable   

    //创建一个DataTable的一个实例。

    DataTable dt = new DataTable("学生表");

    //声明列对象            

    DataColumn column;               

    column = new DataColumn();               

    //设置列的数据类型               

    column.DataType = System.Type.GetType("System.Int32");               

    column.ColumnName = "学生编号";               

    column.ReadOnly = true;               

    column.Unique = true;               

    //向DataTable添加该列               

    dt.Columns.Add(column);

    //建立一个新行   

    row = dt.NewRow();              

    //为新建立的行添加数据               

    row["学生编号"] = Convert.ToInt32(txtID.Text.ToString());               

    row["学生姓名"] = txtName.Text;

    //为该表添加指定的行              

    dt.Rows.Add(row);

    //绑定数据为DataGridView              

    dataGridView1.DataSource = dt;              

    dataGridView1.Refresh();

    4.DataTable的Select方法 三个参数:

    (1). String:筛选条件

    (2).String:排序表达式

    (3).RowStateValue:一个值,指示要以什么版本或状态进行筛选。这是一个枚举值。如 :DataViewRowState.CurrentRows。

    示例代码:  

    DataTable dataTable = new DataTable("学生表临时");       

    dataTable = dt.Clone();

    string expression = "学生编号 = " + Convert.ToInt32(txtID.Text.ToString());              

    //按照条件筛选数据              

    DataRow[] foundRows = dt.Select(expression);

    //遍历查询出来的结果并将其绑定到DataGridView2上。            

    foreach(DataRow dr in foundRows)            

    {                  

      DataRow dataRow = dataTable.NewRow();                  

      dataRow[0] = dr[0];                  

     dataRow[1] = dr[1];

     dataTable.Rows.Add(dataRow);          

    }

     //绑定数据为DataGridView              

    dataGridView2.DataSource = dataTable;              

    dataGridView2.Refresh();

    5.DataTable对象的SELECT方法的功能非常强大,但它效率低,windows web窗体都不支持绑定到select方法的返回值,dataView类能弥补select的局限性. DataView属性:

    (1).RowFilter:此属性用来指定用来过滤记录的字符串格式的表达式/条件。满足条件的记录将只被包括在视图中。

    (2).RowStateFilter:此属性指定此 DataView 返回的数据的版本。

    (3).Sort:此属性用来指定将按其排序记录的表达式。表达式包括列名称和排序限定符,其为 ASC 或 DESC,以升序或降序来显示记录。   

  • 相关阅读:
    _allow_resetlogs_corruption打开数据库
    增量备份恢复DATAGUARD(出现gap并后续有新增数据文件,主从数据文件路径一致)
    dataguard环境破坏后采用rman备份集重新部署
    表空间数据文件迁移到另外的位置(backup as copy tablespace)
    pl/sql无法登录12c问题
    ORA-00845: MEMORY_TARGET not supported on this system
    dataguard主库添加的数据文件路径在从库不存在
    12c expdp
    表进行加密(redact)实验
    创建触发器启动pdb
  • 原文地址:https://www.cnblogs.com/SanMaoSpace/p/2250375.html
Copyright © 2011-2022 走看看