在学习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列)。
目前就总结到这里,不足之处请您评论在下方!