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 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的更多相关文章
- 苹果被拒的血泪史。。。(update 2015.11)
项目提交了N此了,也审核N次了,苹果的审核机制依旧那么不急不慢.昨天刚刚又被拒了.回忆下之前的,总结一下吧. 2015.04.28 昨天被拒非常亏,app的评级是17+,但是在app展示图里有一个比较 ...
- OFBiz 16.11.03的直接部署、eclipse部署和IDEA部署
一.在OFBiz官网下载最新的发行版本,也就是16.11.03版本. 下载地址:http://ofbiz.apache.org/download.html 点击页面Apache OFBiz 16. ...
- 2021.11.03 P6175 无向图的最小环问题
2021.11.03 P6175 无向图的最小环问题 P6175 无向图的最小环问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给定一张无向图,求图中一个至少包含 33 ...
- 2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed)
2021.11.03 P2886 [USACO07NOV]Cow Relays G(矩阵+floyed) [P2886 USACO07NOV]Cow Relays G - 洛谷 | 计算机科学教育新生 ...
- Twelfth scrum meeting 2015/11/9
第一阶段的开发即将结束,工程代码已经集合完毕,计划在2015年11月10日发布第一阶段的成果,本次会议主要商量下一阶段需要完成的工作以及页面修改,还有测试人员的bug整理. 会议记录: 第一项:界面修 ...
- 2015/11/9用Python写游戏,pygame入门(8):按钮和游戏结束
昨天没有更新内容,今天相对多写一些. 因为我们已经基本完成游戏框架,但是游戏结束后,并不知道怎样比较好开始.我本来本着懒的原则,想结束后显示一个黑屏,然后你重新点一下鼠标就重新开始.但是那样实在太不像 ...
- Cheatsheet: 2015 11.01 ~ 11.30
Golang Roadomatic: Node vs. Go Quick Guide to Golang for Java Developers 3 Go Gotchas Web Choosing a ...
- 2015.11.16JQuery 隐藏,显示按钮.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏
原文网址:http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995285.html 讲的很清楚,备份记录. (一) 用函数指针变量调用函数 可以用指 ...
- 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 ...
随机推荐
- 转载 usb_alloc_coherent 和 usb_free_coherent
今天做移植的时候,随手记录一下,今天所遇到的问题解决方法. 在linux2.6.34和之前的代码中还可以使用usb_buffer_alloc 和 usb_buffer_free 这两个函数,在2.6. ...
- Linux服务器---博客wordpress
Wordpress Wordpress是一个开源的博客平台,是搭建个人博客的首选,用户可以去wordpress中文网站寻找帮助资料 1.下载wordpress软件(https://cn.wordpre ...
- Porsche Piwis Tester II V15.6 with CF30 Laptop or Lenovo E49AL Laptop
Some of my customers let me recommended which auto diagnostic tool is good for Porsche , I recommend ...
- python习题一
1.26个字母大小写成对打印,例如:Aa,Bb...... 方法1: for i in range(26): print(chr(65+i)+chr(97+i)) 方法2: for i in rang ...
- Linux环境部署SVN服务器
1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...
- mysql的sql_mode设置
参考官方文档: mysql可以为不同的客户端设置不同的sql_mode,并且每个应用能够设置他自己的会话级别的sql_mode.sql_mode会影响sql语法以及mysql显示数据的正确性. Whe ...
- 【Alpha】Scrum Meeting 9
目录 前言 任务分配 燃尽图 会议照片 签入记录 困难 前言 第9次会议于4月13日20:00在一公寓3楼召开. 交流确认了任务进度,对下一阶段任务进行分配.时长20min. 任务分配 姓名 当前阶段 ...
- FL studio里的项目设置介绍
FL studio作为具有众多音乐功能,能够制作多轨音频录制,排序和混音的一款专业软件,我们可以借助VST主机,灵活的调音台,高级MIDI和ReWire支持,来创建专业品质的各种音乐曲目. 而今天我们 ...
- java为什么要重写hashCode和equals方法?
如果不被重写(原生)的hashCode和equals是什么样的? 不被重写(原生)的hashCode值是根据内存地址换算出来的一个值. 不被重写(原生)的equals方法是严格判断一个对象是否相等的方 ...
- C#Razor模板引擎简单使用
引用 install-package RazorEngine 使用 public class TestDemo { private string name; public int Age { get ...