2015-11-03 ado.net3

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 [email protected] and [email protected]";
                               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 [email protected]");
              para[0] = new SqlParameter("@NewsId", SqlDbType.Int);
              para[0].Value = Convert.ToInt32(txtSRNewsId.Text.Trim());
        }
        if (ddlSNewsClass.SelectedIndex > 0)
        {
              sb.Append(" and [email protected]");
              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 [email protected]";
             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 [email protected]";
                   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();
      }

}

 
时间: 2024-10-19 08:00:31

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

Google Hosts (2015.11.03)

## # Copyright (c) 2014-2015, racaljk. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY. Redistribution and use in anyway, DO # NOT remove these and follow comments. # # Host Database # # localhost is use

PCB设计软件CadSoft Eagle Professional v7.5 Multilingual +DownStream Products 2015.11

PCB设计软件CadSoft Eagle Professional v7.5 Multilingual Win64 1CDCadSoft Eagle Professiona是一款简单易用的印刷电路板设计软件,其中包含原理图编辑器.PCB编辑 器和自动布线器三个模块,方便设计者更方便操作.CadSoft Eagle Professiona支持中文版 DownStream Products 2015.11 1CD业界领先的PCB后处理解决方案CadSoft.Eagle.Professional.v7

2015.11.06 学习Ubuntu下常用命令

2015.11.06 学习Ubuntu下常用命令 1.关闭防火墙:ufw disable 2.开启防火墙:ufw enable 3.防火墙状态:ufw status 4.查看占用的端口:#lsof -i 5.查看某一个端口:#lsof -i:8080  或者是: #netstat -apn|grep 8080————接着:#ps -aux|grep 进程号 6.结束占用端口的进程:#killall 进程名 7.自己写一遍,记得牢!

分布式系统一周技术动态 2015.11.22

分布式系统实践 1. 直观理解paxos http://drmingdrmer.github.io/pdf/paxos-slide/paxos.pdf 要点: paxos协议一直以难以理解著称, 以至于该论文发表10年后才被人们认识到重要性, 这篇文章通过具体的例子来阐述paxos协议, 让人感觉到paxos协议不是发明出来的, 而是演化而来的, 让paxos协议不再那么难以理解了. 2. NoSQL数据库模型 http://darkhouse.com.cn/blog/4?hmsr=toutia

我关注的一周技术动态 2015.11.15

分布式系统实践 1. 一致性哈希算法 http://www.javaranger.com/archives/1781?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 要点: 一致性hash算法是解决分布式系统数据划分的有效手段, 解决了传统hash算法在机器扩容时需要大量移动数据的问题. 这篇文章对一致性hash算法做了简要的介绍, 如果你还不了解一致性hash算法, 那么请读读这篇文章吧 2. 巧用CAS解决数据一致

2015.11.04 学习 Ubuntu下安装gocode

2015.11.04 学习 Ubuntu下安装gocode 1.go get github.com/nsf/gocode,如果不成功 2.网页http://github.com/nsf/gocode,下载包,然后解压,解压后的文件名为gocode-master,修改为gocode. 3.复制gocode文件夹到go的安装目录~/go/github.com/nsf/gocode,(没有的话自行创建) 4.然后命令行执行go install github.com/nsf/gocode.确保安装目录的

2015.11.02 学习 Ubuntu下安装gosublime插件及其配置

2015.11.02 学习 Ubuntu下安装gosublime插件及其配置 1.Ctrl+shift+P 打开package control 输入pcip 回车 2.出现的框中输入gosublime,回车 3.preferences---package setting--gosublime--setting default 打开后在env{}中添加GOROOT和GOPATH 4.保存后全部复制到preferences---package setting--gosublime--setting

http://blog.rainy.im/2015/11/25/extract-color-themes-from-images/

许多从自然场景中拍摄的图像,其色彩分布上会给人一种和谐.一致的感觉:反过来,在许多界面设计应用中,我们也希望选择的颜色可以达到这样的效果,但对一般人来说却并不那么容易,这属于色彩心理学的范畴(当然不是指某些伪神棍所谓的那种).从彩色图像中提取其中的主题颜色,不仅可以用于色彩设计(参考网站:Design Seeds),也可用于图像分类.搜索.识别等,本文分别总结并实现图像主题颜色提取的几种算法,包括颜色量化法(Color Quantization).聚类(Clustering)和颜色建模的方法(颜

2015.11.17 新起点,出发。

今天注册了博客,要开始认真仔细的学习前端技术了.这个博客将作为我学习进度记录.学习笔记整理.心得体会整理等书写记录的工具. —希望苍天不负有心人 2015.11.17

2015.11.23 --- 2015.11.28 线性代数

这一周主要学习了一些内容,包括: 1)从感性认识上认识什么是线性代数,并且从思想上认识到线性代数是有用的. 2)简单的了解了矩阵的加,减,乘.这些都是一些人为规定的一些规则.掌握即可. 3)矩阵的逆,从基本的方法(余子式→代数余子式→伴随矩阵)和高斯方法来求解矩阵的逆. 4)讲了和矩阵相关的几个应用:包括线性方程组和向量的表达,并且从中,我们学习到了从不同的问题中抽象出问题的本质是一样的数学问题. 5)如果一个矩阵的逆是不存在或者是没有定义的,其原因是|A| = 0 . A的逆 = 1 / |A