前言:这节课老师请高级班的E老师过来代课,还是接着老师讲的内容继续深入,修改了上节课老师写的部分代码。

内容:

  1.数据库本质就是一个软件,这个软件帮助我们把数据有序地存储起来,当我们需要数据的时候帮我们快速地把数据找到。程序要和数据库进行交互,需要一些连接的纽带,需要数据库开一个门给我们,我们才能拿到东西,这一功能主要依靠ADO.NET来实现。

  2.数据库的操作主要分为“增删改查”,简记为:CRUD(Create,Read,Update,Delete)。

  3.连接字符串:web.config里面配置:

 <connectionStrings>
<add name="Student" connectionString="Database=Student;Server=.;Integrated Security=false;Uid=sa;Password=123;" providerName="System.Data.SqlClient"/>
</connectionStrings>

  其中的name和database后的名字最好相同。

  4.Connection对象:

 SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());//创建对象
2 connection.Open();//打开连接
3 connection.Close();//关闭连接
4 connection.Dispose();//释放资源

  当然,也可以使用using()来释放资源:using()内的对象必须是继承自IDisposable接口的。

 using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
Response.Write("<script>alert('登录成功')</script>");
}
else
{
Response.Write("<script>alert('用户名或者密码错误')</script>");
}
}

  5.Command对象:

 ExecuteNonQuery: 执行增删改语句,返回值为该命令所影响的行数。
ExecuteReader: 执行查询,并返回一个 DataReader 对象。
ExecuteScalar: 执行查询, 返回查询数。
例:
SqlDataReader reader = cmd.ExecuteReader();//执行ExecuteReader while (read.Read())
{
Response.Write(read[].ToString());
}

  6.参数化:

 string strSql = "DELETE FROM RNews WHERE  NewsId=@NewsId;";
using (con = new SqlConnection(strCon))
{
con.Open();
cmd = new SqlCommand(strSql, con);
cmd.Parameters.Add(new SqlParameter("@NewsId", newsId));
cmd.ExecuteNonQuery();
}

  这种参数化的形式可以防注入,并且有利于数据库的查询计划,加快查询速度。

  7.DataAdapter:它为外部数据源与本地DataSet集合架起了一座坚实的桥梁,将从外部数据源检测到的数据合理正确地调配到本地的DataSet集合中。

  其属性和方法如下:

  • SelectComand属性:获取或设置用于在数据源选择记录的命令。
  • UpdateCommand属性:获取或这只用于更新数据源中的记录的命令。
  • DeleteCommand属性:获取或设置用于从数据源中删除记录的命令。
  • InsertCommand属性:获取或设置用于将新记录插入数据源中的命令。
  • Fill方法:填充数据集。
  • Update方法:更新数据源。
 DataSet ds = new DataSet();
con = new SqlConnection(connStr);
string sql = "select BookId,Title,Author,Press,price from Books";
using (cmd = new SqlCommand(sql, con))
{
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds,"TabBooks");
GridView1.DataSource = ds.Tables["TabBooks"];
GridView1.DataBind();
}

  调用存储过程:

 DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("GetAllUsers", "server=(local);database=DemoDB;Integrated Security=true;");
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[];
  DataSet,DataTable,DataReader,DataAdapter区别:
  (1)DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,相当于存在内存中的数据库,应用程序开始运行时,把数据库相关数据保存到DataSet。
  (2)DataTable表示内存中数据的一个表。常和DefaultView使用获取可能包括筛选视图或游标位置的表的自定义视图。
  (3)DataReader对象是用来读取数据库的最简单方式,它只能读取,不能写入,并且是从头至尾往下读的,无法只读某条数据,但它占用内存小,速度快。  
  (4)DataAdapter对象是用来读取数据库。可读取写入数据,某条数据超着强,但它占用内存比dataReader大,速度慢,一般和DataSet连用。
  (5)Dataset表示一个数据集,是数据在内存中的缓存。 可以包括多个表,DataSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接,DataReader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后由用户决定是否断开连接。
  8.SQL注入:利用了写SQL语句时的不小心而使程序受到攻击。要防止注入,需要注意:检查用户输入的信息,是否含有分号啊,引号之类的;还有一种方式就是使用参数化查询方式:
 StringBuilder strSQL = new StringBuilder();
strSQL.Append("Update tb_SelCustomer Set ");
strSQL.Append(“Phone = @Phone”);
strSQL.Append("where Name = @Name");
using (SqlConnection conn = new SqlConnection(connStr.ConnectionString))
{
SqlCommand cmd = new SqlCommand(strSQL.ToString(), conn);
//构造Parameter对象
SqlParameter[] paras = new SqlParameter[]{new SqlParameter("@Phone",SqlDbType.VarChar, ), new SqlParameter("@Name", SqlDbType.VarChar, ) };
//给Parater对象赋值
paras[].Value = "";
paras[].Value = "测试客户1";
//遍历添加到Parameters集合中
foreach (var item in paras)
{
cmd.Parameters.Add(item);
}
try
{
conn.Open();
cmd.ExecuteNonQuery();
Console.WriteLine("Update Success...");
}
catch (Exception ex)
{
Console.WriteLine("{0}", ex.Message);
}
}

后记:内容有点多,得仔细消化一下。

ASP.NET动态网站制作(23)-- ADO.NET(2)的更多相关文章

  1. ASP.NET动态网站制作(3)--css(2)

    前言:css分为四次课讲完,第一节课内容见ASP.NET动态网站制作(2)--css(1),接下来的内容会涉及到定位.浮动.盒子模型(第二次课).css的具体应用(第三次课).css3(第四次课).今 ...

  2. ASP.NET动态网站制作(24)-- ADO.NET(3)

    前言:ADO.NET的第三节课.今天主要讲SQL Helper. 内容: 1.DataReader和DataSet的区别: (1)DataReader是一行一行地读,且只能向前读:DataSet是一次 ...

  3. ASP.NET动态网站制作(22)-- ADO.NET(1)

    前言:这节课开始真正地学习WEB开发,ADO.NET就是一组允许.NET开发人员使用标准的.机构化的,甚至无连接的方式与数据交互的技术.所属的类库为:System.Data.dll. 内容: 1.AD ...

  4. ASP.NET动态网站制作(25)-- ADO.NET(4)

    前言:这节课老师主要讲网页当中内容的分页效果,自己写一个分页控件. 内容: 1.首先写出HTML代码: <div id="pager"> <%=GetPagerH ...

  5. ASP.NET动态网站制作(26)-- Ajax

    前言:这节课讲解关于Ajax的相关内容. 内容: 1.当点击页面中的一个按钮提交数据或请求数据的时候,整个页面的信息都会提交(不管信息是否是提交或者请求的数据,页面中所有的数据都提交),这样耗用的时间 ...

  6. ASP.NET动态网站制作(20)-- C#(3)

    前言:C#的第三节课,继续上次课的内容,依旧围绕基础的只是讲解. 内容: 1.StringBuilder类:由于string类一旦创建,则不能更改.如果做字符串拼凑的话,将会非常耗费空间,如: str ...

  7. ASP.NET动态网站制作(1)--html

    前言:正式上课的第一课,讲的是前端部分的最基础内容:html. 前端:html,css,js 数据库:sql server 动态部分:.net,c#... IIS(Internet Informati ...

  8. ASP.NET动态网站制作(0)

    前言:一直想系统地学习一下网站建设的相关内容,看过相关的书籍,也跟着视频学过,但总觉得效率不高,学过的东西印象不深刻,或许还是自己动手实践的少.无意中免费听了一堂讲ASP.NET网站建设的课,觉得性价 ...

  9. ASP.NET动态网站制作(28)-- 三层框架(2)

    前言:三层框架的第二节课,继续上次课的内容. 内容: 1.三层框架的使用目的:可以将视图层和业务逻辑层及实体层分开,可以提高代码的扩展性,安全性,可以实现程序的低耦合性. 2.GetModel方法及G ...

随机推荐

  1. Python学习笔记——模块

    使用模块 python中包的组织方式是模块,一个使用其它模块的例子如下: # Filename: using_sys.py import sys print 'The command line arg ...

  2. 在Android中解决内存溢出 – OutOfMemoryError

    原文链接:http://riggaroo.co.za/fixing-memory-leaks-in-android-outofmemoryerror/ 注:本文在原文基础上在如何判断内存是否泄露方面进 ...

  3. Elasticsearch安装(四), elasticsearch head 插件安装和使用。

    安装方式如下: 一.安装Elasticsearch-Head 1.插件安装方式(推荐) #在Elasticsearch目录下 $/bin/plugin -install mobz/elasticsea ...

  4. [PWA] Access the Camera in a PWA built with React

    It's possible to access some, but not all, of the native device features from a PWA. One that we can ...

  5. 利用eolinker实现api接口mock测试(mock server)

    转载:http://blog.csdn.net/naicha_qin/article/details/78276172 前后端分离或者是进行单元测试的时候,必须要用mock api替换掉第三方调用或者 ...

  6. Win7如何安装IIS来浏览ASP网站

    1 进入控制面板-->程序与功能-->点击左侧的"打开或关闭Windows功能"-->把"Internet信息服务"给勾上,点击"确 ...

  7. Android学习(十六) 通过GestureDetector进行手势识别

    一.手势交互过程: 1)触屏时,触发MotionEvent事件. 2)被OnTouchListener监听,在onTouch()中获得MotionEvent对象. 3)GestureDetector转 ...

  8. 【Excle数据透视表】如何为数据透视表应用样式

    如下数据透视表样例,如何为该数据透视表设置样式呢? 步骤 单击数据透视表区域的任意单元格→数据透视表工具→设计→数据透视表样式→打开下拉箭头即可任意选择

  9. MyBatis学习小结

    一款轻量级的ORM框架 全局配置文件 SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> ...

  10. linux常用命令(个人学习笔记)

    个人说明:学习linux也有半年左右的时间了,从一开始的只会简单的开关机,到现在的熟悉应用一些简单的命令,还是有些进步的,不过对于我这种菜鸟来说,如果不经常用,发现忘的很快.所以就把在学习过程中遇到的 ...