在SQLHelper中获取需要的数据

 

在学习C#进行数据库操作的时候,如何对数据库进行增删改查是个问题,那么在查询完数据库,如何判断是否查询成功或者修改成功呢?这是个问题。

  一、判断增、删,改

        // 执行增删改操作

        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)

        {

            int res;

            using (cmd = new SqlCommand(cmdText, GetConn()))

            {

                cmd.CommandType = ct;

                cmd.Parameters.AddRange(paras);

                res = cmd.ExecuteNonQuery();//返回受影响的行数

            }

            return res;

        }

在执行添加数据,删除数据,更新数据的操作时,可以通过cmd.ExecuteNonQuery()来返回受影响的行数,判断是否操作成功

只要不是0行受影响,就证明操作成功。

二、通过ExecuteReader从数据库读取内容

        // 从数据库读取数据

        public int ReadData(string cmdText, SqlParameter[] paras, CommandType ct)

        {

            //DataTable dt = new DataTable();//实例化数据库内存中的一个表

            cmd = new SqlCommand(cmdText, GetConn());  //cmdText:查询的文本;getConn():连接数据库的方法

            cmd.CommandType = ct;//指定命令对象的执行形式,默认为text

            cmd.Parameters.AddRange(paras);//将参数加入到参数集中

            SqlDataReader reader = cmd.ExecuteReader();

            int cash=0;

            if(reader.Read())

            {

                cash = Convert.ToInt32(reader["Cash"]);       //读取数据库中字段的信息

            }

            return cash;  //返回传给DAL层

        }

定义一个SqlDataReader类型的变量,用于接收cmd.ExecuteReader()查询到的数据

SqlDataReader是什么?

    提供一种从SQL Sever数据库中读取只进的行流的方式。

ExecuteReader方法是什么?

ExecuteReader方法存在的目的只有一个:尽可能快地对数据库进行查询并得到结果。ExecuteReader 返回一个DataReader对象:如果在SqlCommand对象中调用,则返回SqlDataReader;如果在OleDbCommand对象中调用,返回的是OleDbDataReader。可以调用DataReader的方法和属性迭代处理结果集。它是一个快速枚举数据库查询结果的机制,是只读、只进的。对SqlDataReader.Read的每次调用都会从结果集中返回一行。

使用这种方法目前我的疑问:代码复用性大大降低,因为是写在SQLHelper中,只能在规定情况下调用。

      

三、通过查询返回一个DataTable 类型的数据表

        //执行查询语句和存储过程

        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)

        {

            DataTable dt = new DataTable();//实例化数据库内存中的一个表

            cmd = new SqlCommand(cmdText, GetConn());  //cmdText:查询的文本;getConn():连接数据库的方法

            cmd.CommandType =ct;//指定命令对象的执行形式,默认为text

            cmd.Parameters.AddRange(paras);//将参数加入到参数集中

            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) //在执行命令时,将关联 Connection 对象已关闭时关联 DataReader 对象已关闭

            {

                dt.Load(sdr);   //将提供的数据源中的值填充到DataTable,如果已存在,则合并

            }

            return dt;  //返回表到DAL层

        }

在SQLHelper中获取查询到的数据,以DataTable类型返回给D层。由D层返回给B层,在B层通过属性进行判断。

定义一个DataTable类型的变量table接收由D层传过来的值

通过table.Rows.Count 判断集合中是否有对象,可以判别数据库中是否存在查询的数据。

通过table.Rows[0][1].ToString().Trim()判断查询到的集合中指定字段位置的数据,可以获取数据库中的数据。

table.Rows[0][1]中0为行数(第0行),1为列数(第1列)。

目前就总结到这里,不足之处请您评论在下方!

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值