DataReader和DateSet区别:

1. DataReader是一行一行的读,且只能向前读。DateSet是一次性读取出来放到内存中,所以,DataReader读取速度更快,占用内存更低。

2. DataReader需要一直和数据库保持连接,DataSet读取完后即和数据库断开。

3. DataSet里面可以储存多个结果集(DataTable)

4. DataSet可以对数据进行缓存,而DataReader不行。

SqlHelper

一:SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

二:SqlHelper做登录效果

protected void btnLogin_Click(object sender, EventArgs e)
      {
             string username = txtUserName.Text.Trim();
             string pwd = txtPwd.Text.Trim();
             if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(pwd))
             {
                     Response.Write("<script>alert('用户名或者密码不能为空');</script>");
             }
             else
             {
                     try
                     {
                               string strSql = "select UserId from UserInfor where UserName=@UserName and Pwd=@Pwd";
                               SqlParameter[] para = new SqlParameter[] { new SqlParameter("@UserName", SqlDbType.NVarChar, 50),

new SqlParameter("@Pwd", SqlDbType.NVarChar, 50) };

para[0].Value = username;
                               para[1].Value = pwd;
                               if (SqlHelper.Exists(strSql, para))

//判断sql语句里面的结果是否存在,两种重置方式,第一种传sql语句,第二种传para可以进行sql注入处理

{
                                        Response.Redirect("RNewsM.aspx");
                               }
                               else
                               {
                                        Response.Write("<script>alert('用户名或者密码错误');</script>");
                               }
                      }
                      catch(Exception ex)
                      {
                               //Response.Write("网页正在维修中....");

MessageBox.Show(ex.Message);    //显示异常信息

}

}

}

三:如何去获取结果集

protected void Page_Load(object sender, EventArgs e)

{
       if (!IsPostBack)
       {
            BindRNews();
       }
 }
 public void BindRNews()
 {
        StringBuilder sb = new StringBuilder();
        sb.Append("select NewsId,Title,CreatedTime,NewsClass,ViewCount from RNews where 1=1");
        SqlParameter[] para = new SqlParameter[2];
        if (!string.IsNullOrEmpty(txtSRNewsId.Text.Trim()))
        {
              sb.Append(" and NewsId=@NewsId");
              para[0] = new SqlParameter("@NewsId", SqlDbType.Int);
              para[0].Value = Convert.ToInt32(txtSRNewsId.Text.Trim());
        }
        if (ddlSNewsClass.SelectedIndex > 0)
        {
              sb.Append(" and NewsClass=@NewsClass");
              para[1] = new SqlParameter("@NewsClass", SqlDbType.NVarChar, 50);
              para[1].Value = ddlSNewsClass.SelectedValue;
        }
SqlDataReader read = SqlHelper.ExecuteReader(SqlHelper.connectionString, CommandType.Text, sb.ToString(), para);
//DataTable dt = SqlHelper.ExecuteDataSetText(sb.ToString(), para).Tables[0];
gvRNews.DataSource = read;
//gvRNews.DataSource = dt;
gvRNews.DataBind();
}

四:删除数据

protected void btnDel_Click(object sender, EventArgs e)
{
      if (string.IsNullOrEmpty(txtDNewsId.Text.Trim()))
      {
             Response.Write("<script>alert('新闻ID不能为空');</script>");
      }
      else
      {
             int newsid = Convert.ToInt32(txtDNewsId.Text.Trim());
             string strSql = "delete RNews where NewsId=@NewsId";
             SqlParameter[] para = new SqlParameter[] { new SqlParameter("@NewsId", SqlDbType.Int) };
             para[0].Value = newsid;
             if (SqlHelper.ExecteNonQueryText(strSql, para) > 0)
             {
                     Response.Write("<script>alert('删除成功');</script>");
                     BindRNews();
             }
}

五:获取详细数据

public partial class NewsPage : System.Web.UI.Page
{
      private int _newsid;

public int NewsId
      {
            get
            {
                   try
                   {
                          _newsid = Request.QueryString["newsid"] == null ? 0 : Convert.ToInt32(Request.QueryString["newsid"].ToString());
                    }
                   catch
                   {
                          _newsid = 0;
                    }
                    return _newsid;
             }
            set { _newsid = value; }
       }
      public string GetNews()
      {
            StringBuilder sb = new StringBuilder();
            sb.Append(@"<table id=""tab"">");
            if (NewsId > 0)
            {
                   string strSql = "select * from RNews where NewsId=@NewsId";
                   SqlParameter[] para = new SqlParameter[] { new SqlParameter("@NewsId", SqlDbType.Int) };
                   para[0].Value = NewsId;
                   DataTable dt = SqlHelper.ExecuteDataSetText(strSql, para).Tables[0];
                   if (dt.Rows.Count > 0)
                   {
                          sb.Append(string.Format("<tr><td>标题:</td><td>{0}</td></tr>", dt.Rows[0]["Title"].ToString()));
                          sb.Append(string.Format("<tr><td>内容:</td><td>{0}</td></tr>", dt.Rows[0]["Text"].ToString()));
                          sb.Append(string.Format("<tr><td>时间:</td><td>{0}</td></tr>", dt.Rows[0]["CreatedTime"].ToString()));
                          sb.Append(string.Format("<tr><td>分类:</td><td>{0}</td></tr>", dt.Rows[0]["NewsClass"].ToString()));
                          sb.Append(string.Format("<tr><td>浏览数:</td><td>{0}</td></tr>", dt.Rows[0]["ViewCount"].ToString()));
                   }

或者使用SqlDataReader

///

SqlDataReader read = SqlHelper.ExecuteReader(SqlHelper.connectionString, CommandType.Text, strSql, para);
                   if (read.HasRows)
                   {
                          while (read.Read())   //用if语句
                          {
                                 sb.Append(string.Format("<tr><td>标题:</td><td>{0}</td></tr>", read["Title"].ToString()));
                                 sb.Append(string.Format("<tr><td>内容:</td><td>{0}</td></tr>", read["Text"].ToString()));
                                 sb.Append(string.Format("<tr><td>时间:</td><td>{0}</td></tr>", read["CreatedTime"].ToString()));
                                 sb.Append(string.Format("<tr><td>分类:</td><td>{0}</td></tr>", read["NewsClass"].ToString()));
                                 sb.Append(string.Format("<tr><td>浏览数:</td><td>{0}</td></tr>", read["ViewCount"].ToString()));
                           }
                     }
                          ///

}
           sb.Append("</table>");
           return sb.ToString();
      }

}

 

2015-11-03 ado.net3的更多相关文章

  1. 苹果被拒的血泪史。。。(update 2015.11)

    项目提交了N此了,也审核N次了,苹果的审核机制依旧那么不急不慢.昨天刚刚又被拒了.回忆下之前的,总结一下吧. 2015.04.28 昨天被拒非常亏,app的评级是17+,但是在app展示图里有一个比较 ...

  2. OFBiz 16.11.03的直接部署、eclipse部署和IDEA部署

    一.在OFBiz官网下载最新的发行版本,也就是16.11.03版本. 下载地址:http://ofbiz.apache.org/download.html   点击页面Apache OFBiz 16. ...

  3. 2021.11.03 P6175 无向图的最小环问题

    2021.11.03 P6175 无向图的最小环问题 P6175 无向图的最小环问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给定一张无向图,求图中一个至少包含 33 ...

  4. 2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed)

    2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed) [P2886 USACO07NOV]Cow Relays G - 洛谷 | 计算机科学教育新生 ...

  5. Twelfth scrum meeting 2015/11/9

    第一阶段的开发即将结束,工程代码已经集合完毕,计划在2015年11月10日发布第一阶段的成果,本次会议主要商量下一阶段需要完成的工作以及页面修改,还有测试人员的bug整理. 会议记录: 第一项:界面修 ...

  6. 2015/11/9用Python写游戏,pygame入门(8):按钮和游戏结束

    昨天没有更新内容,今天相对多写一些. 因为我们已经基本完成游戏框架,但是游戏结束后,并不知道怎样比较好开始.我本来本着懒的原则,想结束后显示一个黑屏,然后你重新点一下鼠标就重新开始.但是那样实在太不像 ...

  7. Cheatsheet: 2015 11.01 ~ 11.30

    Golang Roadomatic: Node vs. Go Quick Guide to Golang for Java Developers 3 Go Gotchas Web Choosing a ...

  8. 2015.11.16JQuery 隐藏,显示按钮.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995285.html 讲的很清楚,备份记录. (一) 用函数指针变量调用函数 可以用指 ...

  10. mysql基本操作 [http://www.cnblogs.com/ggjucheng/archive/2012/11/03/2752082.html]

    创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...

随机推荐

  1. 孙子兵法的计是最早的SWOT分析,《孙子兵法》首先不是战法,而是不战之法。首先不是战胜之法,而是不败之法

    孙子兵法的计是最早的SWOT分析,<孙子兵法>首先不是战法,而是不战之法.首先不是战胜之法,而是不败之法 在打仗之前,你要详细地去算. 计算的目的是什么呢?孙子说,是为了知胜,就是为了知道 ...

  2. Oarcle 之DML

    DML:数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT.UPDATE.DELETE三种指令为核心 ...

  3. DBDocumentGenerator使用

    报错1:未能成功安装.NET Framework 3.5(包括.NET2.0和3.0) 解决办法:安装离线包. ( 1.将“sxs”文件复制到C盘,用完后可以删除:2.右键以管理员身份运行NET Fr ...

  4. 自娱自乐RN版小说APP历程记录

    当前rn版本 "react": "16.6.3" "react-native": "0.58.5" 通过react-na ...

  5. iOS进阶之正则表达式

    最近一直在弄正则表达式,于是在这里整理一下,便于日后查阅. 1.常用符号 ^:字符串的开始 $:字符串的结束 *:表示零个或若干个 ?:表示零个或一个 +:表示一个或若干个 | :表示 或 操作 . ...

  6. asp.net core 使用 web deploy 部署网站

    1.添加角色和功能中 web服务器(iis)->管理工具->管理服务  打勾并安装 2.安装 web deploy,也可以通过 web平台安装程序 来安装,搜索web deploy就可以了 ...

  7. python 字典操作提取key,value

    python 字典操作提取key,value dictionaryName[key] = value 1.为字典增加一项  2.访问字典中的值  3.删除字典中的一项  4.遍历字典  5.字典遍历的 ...

  8. Bigger-Mai 养成计划,Docker之安装,部署

    CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...

  9. 毕业设计 Makefile 编写

    一天下来,Makefile终于完成了,可以实现c文件和头文件不同目录,并将输出文件输出到其他如output目录,将执行文件和makefile文件并列: 源码如下: # ================ ...

  10. [评测]低配环境下,PostgresQL和Mysql读写性能简单对比(欢迎大家提出Mysql优化意见)

    [评测]低配环境下,PostgresQL和Mysql读写性能简单对比 原文链接:https://www.cnblogs.com/blog5277/p/10658426.html 原文作者:博客园--曲 ...