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>
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>
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 }
效果:
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>
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>
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 }
效果就是这样喽:
以上是关于Ado.net的主要内容,如果未能解决你的问题,请参考以下文章