访问数据库的方式

在线式访问数据库
    使用数据读取器DataReader读取数据
    DataReader对象是Command对象在调用ExecuteReader方法查询数据库在返回数据记录的同时,将产生一个DataReader对象并指向返回的记录集
    DataReader对象可以从数据库得到**只读的 只能向前**的数据流
    DataReader常用的属性及方法:
           IsDBNULL()  返回布尔值 判断列是否包含NULL值
           Read()  返回布尔值 指示是否多行  读到数据返回True 没有读到数据则返回False 将DataReader对象前进到下一行读取,SqlDataReader的默认位置在第一条记录前面,因此必须使用Read来访问任何数据
           Close()   关闭DataReader对象
           HasRows   HasRows属性表示是否返回数据
           GetString()  此方法返回字段索引指定字段的值,类型为字符串,索引在括号内
           Item    此属性返回字段索引或字段名字对应的字段的值    Item[string] 列名   Item[Int32] 索引
 这里添加一个小插曲  **使用.ToString()方法可以把object类型转换为string类型**
   典型代码:
          SqlCommand  cmd = new SqlCommand(sql,con);
          SqlDataReader dr =  new SqlDataReader();
          if(dr.Read()){//如果读到数据
          }
   优缺点: 节省资源  效率高  但是增加服务器负荷 缺乏灵活性
 离线式访问数据库
      DataSet(数据集 :真实数据在内存中的复制品) <----DataAdapter(数据适配器 类似于货车) <-----DataBase
      ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020072515543554.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzM2ODU1,size_16,color_FFFFFF,t_70)
      DataAdapter对象的方法:
            Fill(数据集,表名) 将我们需要的数据fill()到数据集中或者某张表中
            Update() 使用Update方法告诉数据库  我在数据集中做了哪些变化  数据库中也要进行相应的变化 **因为Update方法中有CommandBuilder对象  会自动根据数据集中的变化 在数据库中自动的生成相应的增删改查操作**
            核心代码:
              DataSet  ds = new DataSet();//定义并实例化一个数据集DataSet对象
              SqlDataAdapter da =  new SqlDataAdapter(sql,con);
              1) da.Fill(ds); //调用数据设配器DataAdapter的Fill()方法把数据加载到ds中
              2)da.Fill(ds,TableName); //调用数据设配器DataAdapter的Fill()方法把数据加载到ds中的TableName表中
        **DataAdapter对象如果检测到没有打开数据库  会自动打开 但不会自己关闭**
        修改的代码:
        DataRow[] dr = ds.Tables[TableName].Select("学号=‘xxx'");
        dr[0]["年龄"]=100;
        SqlCommandBuilder br = new SqlCommandBuilder(da);//为DataAdapter对象生成一个CommandBuilder对象,以自动为数据库更新生成相应的sql命令
        da.Update(ds,TableName);//调用DataAdapter的Update方法更新真实的数据库
        添加的代码:
        DataRow[] dr = ds.Tables[TableName].NewRow();
        dr["学号"] ="xxx";
        dr["姓名"]="xxx";
        ds.Tables[TableName].Rows.Add(dr);
        SqlCommandBuilder br = new SqlCommandBuilder(da);//为DataAdapter对象生成一个CommandBuilder对象,以自动为数据库更新生成相应的sql命令
        da.Update(ds,TableName);//调用DataAdapter的Update方法更新真实的数据库
        删除的代码:
       DataRow[] dr = ds.Tables[TableName].Select("学号=’xxx'");
       dr[0].Delete();
       SqlCommandBuilder br = new SqlCommandBuilder(da);//为DataAdapter对象生成一个CommandBuilder对象,以自动为数据库更新生成相应的sql命令
       da.Update(ds,TableName);//调用DataAdapter的Update方法更新真实的数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值