Ado.net

Posted wangwangwangMax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ado.net相关的知识,希望对你有一定的参考价值。

一、Ado.net介绍

 1.什么是Ado.net

    ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。

    与EF,sqlheader最大的区别就是,底层都是ado.net。

      

  2.新建一个web窗体页面发现它与html页面的区别是最上面多了一行代码:

          

     这行代码表示这个web页面有一个与之对应的后台页面(aspx.cs).cs结尾的一个类文件,这个后端页面去实现和数据库的交互

 

  3. 我们先在aspx.cs页面打印一句话-hello!:

           

     补充知识点:

          ①.Page_Load:表示页面的入口

          ②.页面一运行就执行Page_Load里面的内容

          ③.关于request和response的运行原理:页面输出一段文字,向客户端发送一个请求,做一个响应

           

               一个请求reequst,一个响应response都在上下文对象(context)里。

            ④.不同的类调用它的方法要实例化,在同一个类里面可以直接调用。

  

  4.我们通过ado.net把数据库中的一段内容显示在网页中

    ①.通过sql语句得到数据库中的数据,首先要在程序中指定数据的服务器地址,验证方式,用户名和密码

    ②.连接字符串

     ⅰ.第一种方式:     

string connStr= "Database=Student;Server=.;Integrated Security=false;Uid=sa;Password=123;"      

      

     ⅱ.第二种方式:web.config里面配置[假如页面多,每个页面都要写一个连接字符串,所以我们一般放在配置文件中]

        注意:name="MyBookShop"节点名称,节点名称最好和数据库名称一致

<connectionStrings>
    <add name="MyBookShop" connectionString="server=.;Database=MyBookShop;Integrated Security=false;Uid=sa; password=123456;" providerName="System.Data.SqlClient"/>
  </connectionStrings>   

    ③.我们把这个放到配置文件之后,我们要怎么获取它呢?

       通过节点名称来获取到节点里面对应的字符串内容,这个过程相当于和别人聊微信需要微信号一样。

        //通过这个类ConfigurationManager获取web.confiig里面的节点名称来获取连接的字符串
        string conStr = ConfigurationManager.ConnectionStrings["MyBookShop"].ToString();

         注意:调用的时候需引入命名空间using System.Configuration;要是不知道怎么写也没关系,鼠标放到ConfigurationManager上面右键,解析就会出来,点击一下就好。

        

    ④.微信号有了,那就要加她,这时候就用到了sqlconnection,用connection对象需引入命名空间using System.Data.SqlClient;

        SqlConnection con = new SqlConnection(conStr);

    ⑤.和数据库建立连接

         con.open();//打开数据库连接

    ⑥.连接之后要得到sql语句

         string sql="select loginid,name,loginpwd,address,phone,mail from Users";

    ⑦.sql语句有了,就要创建一个对象去执行sql语句

        sqlcommand cmd=new sqlcommand(sql,con);  //需传入两个参数

    ⑧.对象有了之后,我们就要通过对象去执行sql语句,怎么执行呢?

//"select loginid,name,loginpwd,address,phone,mail from Users";这是一个结果集
//cmd.ExecuteReader();通过这个结果获得查询结果,返回的是sqlDataReader类型
//我们要定义一个变量用于储存查询的结果
sqlDataReader dr=cmd.ExecuteReader();

    ⑨.结果要显示在页面中,我们需要有个东西接收它,我们就用到了一个控件GridView

       直接把控件拖过来放到前端页面,div里,表格需要指出数据库对应的是哪一列?编辑列->添加BoundField

       

   ⑩.设置好之后,GridView里面还没有数据,这时候就需要指定数据源

     GridView1.DataSource = dr;

   ⑪.有了数据源之后需要把它绑定到GridView里面

     GridView.DataBind();

   ⑫.用完之后,就要关闭,不然就会一直占用,其它地方也用不了

      dr.Dispose();//释放资源
      dr.Close();//关闭连接
      con.Dispose();
      con.Close();

       还有另外一种方式: 

      using( cmd = new SqlCommand(sql,con))
         //对象有了,我们要通过对象去执行sql语句
          {
              using (dr = cmd.ExecuteReader())
              {
                  IdGridView.DataSource = dr;
                  IdGridView.DataBind();
              }

        

   源代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!--
 3   有关如何配置 ASP.NET 应用程序的详细信息,请访问
 4   http://go.microsoft.com/fwlink/?LinkId=169433
 5   -->
 6 <configuration>
 7   <connectionStrings>
 8     <add name="MyBookShop" connectionString="server=.;Database=MyBookShop; Integrated Security=false;Uid=sa; password=123456;" providerName="System.Data.SqlClient"/>
 9   </connectionStrings>
10   <system.web>
11     <compilation debug="true" targetFramework="4.5" />
12     <httpRuntime targetFramework="4.5" />
13   </system.web>
14 </configuration>
web.config
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="head.aspx.cs" Inherits="myproject1.head" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 8     <title></title>
 9     <link href="css/head.css" rel="stylesheet" />
10 </head>
11 <body>
12     <form id="form1" runat="server">
13     <div class="gv">
14                 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
15             <Columns>
16                 <asp:BoundField DataField="ID" HeaderText="ID" />
17                 <asp:BoundField DataField="loginid" HeaderText="用户名" />
18                 <asp:BoundField DataField="name" HeaderText="姓名" />
19                 <asp:BoundField DataField="loginpwd" HeaderText="pwd" />
20                 <asp:BoundField DataField="Address" HeaderText="地址" />
21                 <asp:BoundField DataField="classname" HeaderText="班级" />
22             </Columns>
23         </asp:GridView>
24     </div>
25     </form>
26 </body>
27 </html>
head
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 using System.Configuration;
 8 using System.Data.SqlClient;
 9 using System.Text;
10 
11 namespace myproject1
12 {
13     public partial class head : System.Web.UI.Page
14     {
15         private string constr = ConfigurationManager.ConnectionStrings["MyBookShop"].ToString();
16         SqlConnection con = null;//相当于号码
17         SqlCommand cmd = null;//执行sql语句
18         SqlDataReader dr = null;//用于储存查询结果
19         protected void Page_Load(object sender, EventArgs e)
20         {
21             con = new SqlConnection(constr);//号码
22             con.Open();//有了号码之后要打开微信
23             string sql = "select ID,loginid,name,loginpwd,Address,classname from Users where 1=1";
24             cmd = new SqlCommand(sql, con);
25             dr = cmd.ExecuteReader();
26             GridView1.DataSource = dr;
27             GridView1.DataBind();
28             dr.Dispose();//释放资源
29             dr.Close();//关闭连接
30             con.Dispose();
31             con.Close();
32         }
33 
34         protected void Button1_Click(object sender, EventArgs e)
35         {
36 
37         }
38     }
39 }
head.aspx.cs

   效果:

      

  5.我们添加一个用户名查找,选择班级查找功能:

  源代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!--
 3   有关如何配置 ASP.NET 应用程序的详细信息,请访问
 4   http://go.microsoft.com/fwlink/?LinkId=169433
 5   -->
 6 <configuration>
 7   <connectionStrings>
 8     <add name="MyBookShop" connectionString="server=.;Database=MyBookShop; Integrated Security=false;Uid=sa; password=123456;" providerName="System.Data.SqlClient"/>
 9   </connectionStrings>
10   <system.web>
11     <compilation debug="true" targetFramework="4.5" />
12     <httpRuntime targetFramework="4.5" />
13   </system.web>
14 </configuration>
web.config
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="head.aspx.cs" Inherits="myproject1.head" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 8     <title></title>
 9     <link href="css/head.css" rel="stylesheet" />
10 </head>
11 <body>
12     <form id="form1" runat="server">
13     <div class="gv">
14         <table>
15             <tr>
16                 <td>用户名:</td>
17                 <td>
18                     <asp:TextBox ID="TextBox1" runat="server" Width="132px"></asp:TextBox>
19                 </td>
20                 <td>班级:</td>
21                 <td>
22                     <asp:DropDownList ID="ddlclass" runat="server">
23                         <asp:ListItem>--请选择--</asp:ListItem>
24                         <asp:ListItem>微软一班</asp:ListItem>
25                         <asp:ListItem>微软二班</asp:ListItem>
26                         <asp:ListItem>微软三班</asp:ListItem>
27                         <asp:ListItem>微软四班</asp:ListItem>
28                         <asp:ListItem>微软五班</asp:ListItem>
29                         <asp:ListItem>微软六班</asp:ListItem>
30                         <asp:ListItem>视觉一班</asp:ListItem>
31                     </asp:DropDownList>
32                 </td>
33                 <td>
34                     <asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" />
35                 </td>
36             </tr>
37         </table>
38         <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
39             <Columns>
40                 <asp:BoundField DataField="ID" HeaderText="ID" />
41                 <asp:BoundField DataField="loginid" HeaderText="用户名" />
42                 <asp:BoundField DataField="name" HeaderText="姓名" />
43                 <asp:BoundField DataField="loginpwd" HeaderText="pwd" />
44                 <asp:BoundField DataField="Address" HeaderText="地址" />
45                 <asp:BoundField DataField="classname" HeaderText="班级" />
46             </Columns>
47         </asp:GridView>
48     </div>
49     </form>
50 </body>
51 </html>
head.aspx
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 using System.Configuration;
 8 using System.Data.SqlClient;
 9 using System.Text;
10 
11 namespace _20160520
12 {
13     public partial class head: System.Web.UI.Page
14     {
15         //假如页面多,每个页面都要写一个连接字符串,所以我们一般放在配置文件中
16         //string strstring = "server=.; Database=MyBookShop;Integrated Security=false;Uid=sa;Pwd=123456";
17        // string connStr = "Database=Student;Server=.;Integrated Security=false;Uid=sa;Password=123;";     
18 
19         //通过这个类ConfigurationManager获取web.confiig里面的节点名称来获取连接的字符串
20        private string conStr = ConfigurationManager.ConnectionStrings["MyBookShop"].ToString();
21         //把这个字符串传进去
22        //SqlConnection con = new SqlConnection(conStr);
23        SqlConnection con = null;//相当于是电话
24        SqlCommand cmd = null;//执行sql语句
25        SqlDataReader dr = null;//用于储存查询结果
26         //页面一运行就执行这里面的内容
27         protected void Page_Load(object sender, EventArgs e)
28         {
29             BindUser();
30         }
31         public void BindUser()
32         {
33             con=new SqlConnection(conStr);
34             con.Open();//和数据库建立起了连接
35             //得到sql语句
36             //string sql = "select loginid,name,loginpwd,address,ClassName,mail from Users";
37             string sql = Getswhere();
38             //执行sql语句
39             using( cmd = new SqlCommand(sql,con))
40             //对象有了,我们要通过对象去执行sql语句
41             {
42                 using (dr = cmd.ExecuteReader())
43                 {
44                     IdGridView.DataSource = dr;
45                     IdGridView.DataBind();
46                 }
47             //dr.Dispose();//释放资源
48             //dr.Close();//关闭连接
49             //con.Dispose();
50             //con.Close();
51             }
52         }
53         protected void btnsel_Click(object sender, EventArgs e)
54         {
55 
56         }
57         //我们需要得到where后面
58         public string Getswhere() 
59         {
60             StringBuilder sb = new StringBuilder();
61             sb.Append("select id,name,loginpwd,address,ClassName,mail from Users where 1=1");
62             //获取到它的用户名
63             string name = TxtUserName.Text.Trim();
64             if(!string.IsNullOrEmpty(name))
65             {
66                 sb.Append(string.Format("and name=\'{0}\'", name));
67             }
68             if(ddlsclass.SelectedIndex>0)
69             {
70                 sb.Append(string.Format("and ClassName=\'{0}\'", ddlsclass.SelectedValue));
71             }
72             return sb.ToString();
73         }
74     }
75 }
head.aspx.cs

    效果就是这样喽:

   

以上是关于Ado.net的主要内容,如果未能解决你的问题,请参考以下文章

使用asp.net mv在ado.net中选择带有where子句的查询

ADO.Net 同步和 SQL CE

ADO.Net 综合练习题

ADO.net 综合练习题

从 android 2.1 使用 ado.net 数据服务

ADO.NET - 更新多个数据表