Ado_net资料


DataSet的结构和使用
Relations
1. 表示两个DataTable对象之间的父/子关系,关系 数据库的数据源的table之间的约束关系
//定义关系对的父值 DataColumn parent=DataSet1.Tables[“Customers”].Columns[“CustID”]; //定义关系对的子值 DataColumn child=DataSet1.Tables[“Orders”].Columns[“CustID”]; //定义关系 DataRelation relCustOrder=new DataRelation(“CustomersOrders”,parent,child); //将关系添加入到DataSet中
mandText=deletestring;
cmd.Connection=conn; cmd.ExecuteNonQuery();
24
SQL Server数据提供程序的使用 SqlCommand
7.得到单一值
使用SqlCommand对象的ExecuteScalar方法,能让数据库 执行并且只返回你所需要的单独值 SqlCommand cmd=new SqlCommand(“select count(*) from Categories”,conn); int count=(int)cmd.ExecuteScalar();
17
SQL Server数据提供程序的使用
例:
SqlConnection conn=new SqlConnection(“Data Source=…; Initial Catalog=…; User Id=…; Password=…”);
也可以直接实例化一个SqlConnection对象,然后用 ConnectionString属性初始化该对象
26
SQL Server数据提供程序的使用 SqlDataAdapter
1.管理与数据源的连接(DataSet只存储数据而不与 数据源发生交互) 2.例如:当data填充数据的时候
①打开连接 ②将数据加载到DaServer数据提供程序的使用 SqlDataAdapter
1.创建SqlCommand对象
SqlCommand cmd=new SqlCommand(“select * from customer”,conn); SqlCommand cmd=new SqlCommand(); mandText=“select * from customer”;
SqlConnection conn=new SqlConnection();
conn.connectionstring=“Data Source=…; Initial Catalog=…; User Id=…; Password=…”;
打开:Open
关闭:Close
18
SQL Server数据提供程序的使用 SqlCommand
第8章

1
教学目标
1.了解数据库访问的发展过程
2.理解的工作原理
3.掌握操作数据库的方法
2
数据访问技术的发展
Native Library

ODBC
(DAO/RDO)ADO
OLE DB
3
OLE DB OLE DB的数据访问序列:
1.初始化OLE 2.连接到数据源 3.发出命令 4.处理结果 5.释放数据源对象并停止初始化OLE
1.得到SqlDataAdapter的实例
使用SQL命令和连接对象来读写数据 SqlDataAdapter Customers=new SqlDataAdapter(“select CustomerID,CustomerName from Customers”,conn); select语句指明了将哪些数据读入数据集
8
.NET Framework 数据提供程序:
组件的目的
实现数据操作和对数据的快速、只进、只读访问
组件的用途 • • • •
9
Connection Command DataReader DataAdapter
.NET Framework 数据提供程序:
SQL Server .NET Framework 数据提供程序
SqlParameter paramID=new SqlParameter(“@CategoryId”,SqlDbType.int);
paramID.Value=m_Id;
cmd.Parameters.Add(paramID);
cmd.Connection=conn;
20
SQL Server数据提供程序的使用 SqlCommand
21
SQL Server数据提供程序的使用 SqlCommand
4.插入数据
使用SqlCommand对象的ExecuteNonQuery方法 string insertstring=@”insert into Categories(CategoryName, Description)values(„Miscellaneous‟,‟Whatever‟)”; SqlCommand cmd=new SqlCommand(insertstring,conn);
6
结构图
7
DataSet:
设计目的 独立于任何数据源的数据访问 组成 一个或多个Data Table对象的集合 数据行、数据列、主键、外键、约束和数据的关 系信息
用途 容纳由.NET Framework Data Provider获取的数 据或者XML中加载的数据
2.连接字符串
Data Source:指明服务器,机器域名或IP地址
Initial Catalog:数据库的名字
Integrated Security:连接使用用户的Windows登录 UserID:SQL Server中的用户名 Password: SQL Server中的用户名匹配的密码
25
SQL Server数据提供程序的使用 SqlDataReader
1.创建SqlDataReader对象
SqlDataReader dr=cmd.ExecuteReader();
2.读取数据
快速只向前,只读一遍
while(rdr.read()){ string contact=(string)rdr[“ContactName”]; string company=(string)rdr[“companyName”]; Console.Write(“{0,-25}”,contact); Console.Write(“{0,-25}”,city); }
4
OLE DB OLE DB的组件模型:
1.Data Providers 数据提供者 2.Data Consumers 数据使用者
3.Service Components 服务组件
执行数据提供者一级数据使用者之间数据传递的 工作
5
的核心组件:
DataSet .NET Framework 数据提供程序
OLE DB .NET Framework 数据提供程序
ODBC .NET Framework 数据提供程序 Oracle .NET Framework 数据提供程序
10
从数据源中获取数据,并保存到DataSet。
11
只有数据提供者,不用DataSet
12
DataSet的结构和使用 DataSet结构图
mandType=CommandType.Text;
cmd.Connection=conn; TableDirect:直接的表操作 StoredProcedure:存储过程命令
Text:文本命令(一般是构造的SQL命令)
19
SQL Server数据提供程序的使用 SqlCommand
2.SqlCommand的参数
SqlCommand cmd=new SqlCommand(); mandText=“select name from Categories where CategoryId=@CategoryId”; mandType=CommandType.Text;
cmd.ExecuteNonQuery();
22
SQL Server数据提供程序的使用 SqlCommand
5.更新数据
使用SqlCommand对象的ExecuteNonQuery方法,用于执行 一个无返回值的sql查询 string updatestring=@”update Categories set CategoryName= „other‟ where CategoryName=„Miscellaneous‟”; SqlCommand cmd=new SqlCommand(updatestring); cmd.Connection=conn; cmd.ExecuteNonQuery();
SQL Server数据提供程序的使用 SqlConnection
1.创建SqlConnection对象
SqlConnection conn=new SqlConnection(“Data Source=jy;Initial Catalog=EBuy;Integrated Security=True”);
DataSet1.Relations.Add(relCustOrder);
DataSet的结构和使用
ExtendProperties
1. 代表一些用户自定义的描述信息
例如:存入数据的过期时间
DataSet1.ExtendProperties.Add(“ExpiredTime”,DateTime.No w.Add(new TimeSpan(0,1,0,0)));
3.查询数据
合集下载

ADO.Net技术

ADO.Net技术

技术Connection对象1.连接数据库通过SqlConnection对象的State属性判断数据库的连接状态:public override ConnectionState State{ get;}属性值:ConnectionState枚举枚举值说明Broken 与数据源的连接中断Closed 连接处于关闭状态Connecting 连接对象正在与数据源连接Executing 连接对象正在执⾏命令Fetching 连接对象正在检索数据Open 连接处于打开状态Try{string conStr = “server=.;database=hmliang;uid=sa;pwd=”;SqlConnection conn = new SqlConnection(conStr);conn.Open();if (conn.State == ConnectionState.Open){}conn.Close();//conn.Dispose();}catch{}2.关闭连接Close⽅法⽤于关闭⼀个连接。

Dispose⽅法不仅关闭连接,⽽且还清理连接所占⽤的资源。

注:在编写应⽤程序时,对数据库操作完成后,要及时关闭数据库的连接,以防⽌在对数据库进⾏其他操作时数据库被占⽤。

Command对象1.3个重要的属性:a).Connection属性⽤于设置SqlCommand使⽤的SqlConnectionb).CommandText属性⽤于设置要对数据源执⾏的的SQL语句或存储过程c).CommandType属性⽤于设置指定CommandText的类型。

CommandType枚举成员:StoredProcedure:存储过程的名称TableDirect:表的名称Text:SQL⽂本命令SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = “SELECT COUNT(*) FROM A”;mandType = CommandType.Text;int i = Convert.ToInt32(cmd.ExecuteScalar());2.执⾏SQL语句1).ExecuteNonQuery⽅法执⾏SQL语句,并返回受影响的⾏数。

ADO_07

ADO_07
Return ds
应用 Web 服务
7.1.3 应用 Web 服务

为已经存在的 Web 服务增加一个 Web 引用
Dim ws As New _ ClientList.localhost.Service1()

增加一个与 Web 服务定义的数据集完全相同的 数据集实例
Public CustDS1 As New _ ClientList.localhost.CustDS()
第7章 构建和应用的Web 服务

构建和应用返回数据的Web服务
构建和应用返回数据的Web服务
7.1 构建和应用返回数据的Web服务


Web 服务简介
构建返回数据库信息的Web 服务 应用 Web 服务
Web 服务简介
7.1.1 Web 服务简介

可以使用标准网络协议访问的可编程逻辑单元

为一CustomerId, CompanyName FROM Customers WHERE (City like @city)
Visual Basic 示例
C# 示例
构建返回数据库信息的 Web 服务(续)
7.1.2 构建返回数据库信息的 Web 服务

定义一个空数据集的实例
Dim ds As New CustDS()

使用数据适配器进行查询
SqlDataAdapter1.SelectCommand.Parameters(0 ).Value = city

将查询结果填充到数据集
SqlDataAdapter1.Fill(ds)

返回数据集到客户端进行后续处理




由于 Web 服务提供者与客户端之间的消息机制是基于 XML 的,因此除了双方的输入,输出以及位置外不必考虑其他 的因素

ADONET技术及其实践应用

ADONET技术及其实践应用

2012年12月内蒙古科技与经济December2012 第24期总第274期Inner M o ngo lia Science T echnolo gy&Economy N o.24T o tal N o.274 ADO.N ET技术及其实践应用张 岚1,高建芳2(1.内蒙古电子信息职业技术学院,内蒙古呼和浩特 010010;2.包头职业技术学院,内蒙古包头 014030) 摘 要:对技术的主要目标、技术特点、核心组件的工作原理进行了阐述,并以其在C#语言中连接数据库为例详细阐述了ADO.N ET在实践中的使用过程。

关键词:ADO.N ET技术;断开连接;XM L 中图分类号:T P311 文献标识码:B 文章编号:1007—6921(2012)24—0040—011 技术简介是在微软的.NET中创建分布式和数据共享应用程序的应用程序开发接口。

它是在Act iveX Dat a Object(ADO)数据访问模型的基础上发展而来的,由一系列的数据库相关类和接口组成。

的主要目标是实现对关系型数据的简单访问。

它的设计满足了当前应用程序开发框架的多种需求;引入的Dat aSet类负责存放数据库中的关系型数据,并维持它们之间完整性,非常容易扩展数据访问接口的功能;提供了多种内置的. NET数据提供者,用于连接各种数据库和数据文件格式。

XM L与数据访问是紧密联系在一起的,ADO. NET的另外一个重要的目标是沟通行、列和XM L 文档中的关系型数据。

.NET技术是以XM L为基础构建的,XM L支持内置在ADO.N ET的基本级别上。

.NET框架与中的XM L类同属一个结构,它们在许多不同的级别上实现集成,不需要在数据访问服务集和它们的XM L副本间进行选择。

2 的技术特点2.1 断开式数据结构,与XM L的紧密集成,以及能够组合来自多个数据源的数据ADO.N ET采用断开连接模式,即与数据库建立连接把所需数据下载到本地缓冲区后,断开与数据库的连接。

ADO.NET读书笔记系列之DataSet对象数据库教程-电脑资料

ADO.NET读书笔记系列之DataSet对象数据库教程-电脑资料

读书笔记系列之DataSet对象数据库教程-电脑资料ado|笔记|对象一、特点介绍1、处理脱机数据,在多层应用程序中很有用,。

2、可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法。

3、处理分级数据4、缓存更改5、XML的完整性:DataSet对象和XML文档几乎是可互换的。

二、使用介绍1、创建DataSet对象:DataSet ds = new DataSet("DataSetName");2、查看调用SqlDataAdapter.Fill创建的结构da.Fill(ds,"Orders");DataTable tbl = ds.Table[0];foreach(DataColumn col in tbl.Columns)Console.WriteLine(col.ColumnName);3、查看SqlDataAdapter返回的数据①、DataRow对象DataTable tbl = ds.Table[0];DataRow row = tbl.Row[0];Console.WriteLine(ros["OrderID"]);②、检查存储在DataRow中的数据DataTable tbl = row.Table;foreach(DataColumn col in tbl.Columns)Console.WriteLine(row[col]);③、检查DatTable中的DataRow对象foreach(DataRow row in tbl.Rows)DisplayRow(row);4、校验DataSet中的数据①、校验DataColumn的属性:ReadOnly,AllowDBNull,MaxLength,Unique②、DataTable对象的Constrains集合:UiqueConstraints,Primarykey,ForeignkeyConstraints通常不必刻意去创建ForeignkeyConstraints,因为当在DataSet 的两个DataTable对象之间创建关系时会创建一个。

ADONET技术详解

ADONET技术详解

什么叫是.NET FrameWork SDK提供给.NET开发语言进行数据库开发的一个系列类库的集合。

它可以有效地从数据操作中将数据访问分解为多个可以单独使用或前后使用的不连续组件。

的组成微软设计组件的目的是为了从数据操作中分解出数据访问。

完成此任务的是的两个核心组件。

.NET数据提供程序的在中的分类图* .NET数据提供程序:实现数据操作和对数据的快速读写访问。

* DataSet数据集:在内存中的、有着丰富功能的数据缓冲区,是一个记录集的集合。

在Visual C# 2005中,.NET数据提供程序有以下5种:* Microsoft OLE DB数据提供程序。

* Microsoft ODBC数据提供程序。

* Microsoft SQL Server数据提供程序。

* Oracle数据提供程序。

* 其他数据提供程序。

而每种.NET数据提供程序都包含了以下4种对象。

* Connection对象:提供与数据源的连接。

* DataAdapter对象:提供连接DataSet对象和数据源的桥梁。

* Command对象:提供对数据库命令的访问,这些命令可用于返回数据、修改数据、运行存储过程、发送或检索参数信息。

* DataReader对象:从数据源中提供高性能的数据流。

DataSet数据集是的断开式结构的核心组件,它在与数据源断开的缓存中存储数据,从而实现了独立于任何数据源的数据访问。

因此,它可以用于多种不同的数据源,包括XML 数据源、远程的或本地的数据库。

DataSet包含一个或多个DataTable对象的集合,每个DataTable对象包含DataRow对象、DataColumn对象和Constraint对象,分别存放数据表的行信息、列信息及约束信息。

此外DataSet对象还包含DataRelation对象,用于表示表间关系。

它们的关系如图14-1所示。

图14-1 .NET数据提供程序和DataSet数据集结构图连接数据库的过程当应用程序需要连接数据库时,首先需要用Connection对象连接数据库,然后用Command 对象对数据库进行操作,Command对象的执行结果可以被DataReader对象读取,也可以被DataAdapter对象用来填充DataSet对象。

ADO.NET基础知识详解

ADO.NET基础知识详解

基础知识详解是微软提供的⼀种数据库访问技术。

为不同类型的数据源提供了不同的数据提供程序对象:数据提供程序说明SQL Server 数据提供程提供对Microsoft SQL Server中数据的访问,使⽤System.Data.SqlClient命名空间。

序OLE 数据提供程序提供对使⽤OLE DB公开的数据源(如Access、Excel等)中数据的访问,使⽤System.Data.oleDb 命名空间。

ODBC 数据提供程序提供对使⽤ODBC公开的数据源中数据的访问,使⽤System.Data.Odbc命名空间。

数据提供程序中包含了的四个核⼼对象:对象说明Connection建⽴与特定数据源的连接Command对数据源执⾏命令DataReader从数据源中读取只进只读的数据流DataAdapter使⽤数据源填充DataSet并⽀持更新提供两种⽅式访问数据库:连接式访问:整个操作过程中需要保持数据库连接。

断开式访问:只需要在执⾏数据库命令时保持数据库连接。

⼀、使⽤DataReader读取数据使⽤DataReader读取数据属于连接式读取,只能只进的⼀⾏⼀⾏读取数据,并且不能改变数据,如需要改变数据,必须重新执⾏insert,update,delete等sql语句来改变数据。

⽰例:使⽤DataReader读取数据在ListView控件显⽰:此⽰例的测试数据如下:create table Member(MemberId int primary key identity(1,1),MemberAccount nvarchar(20) unique check(len(MemberAccount) between 6 and 12),MemberPwd nvarchar(20),MemberName nvarchar(20),MemberPhone nvarchar(20))insert into Member(MemberAccount,MemberPwd,MemberName,MemberPhone)values('liubei','123456','刘备','4659874564')insert into Member(MemberAccount,MemberPwd,MemberName,MemberPhone)values('guanyu','123456','关⽻','42354234124')insert into Member(MemberAccount,MemberPwd,MemberName,MemberPhone)values('zhangfei','123456','张飞','41253445')insert into Member(MemberAccount,MemberPwd,MemberName,MemberPhone)values('zhangyun','123456','赵云','75675676547')insert into Member(MemberAccount,MemberPwd,MemberName,MemberPhone)values('machao','123456','马超','532523523')此⽰例代码如下:在编写代码之前需要进⾏ListView控件的编辑列操作,并且将视图模式切换成Details模式。

【免费下载】ADONET认证题库第2套 题目及参考答案

认证题库第2套题目及参考答案《数据库访问技术—— 程序设计》复习过程中如有疑问请咨询牛洁老师1.为了在DataTable中添加一个计算总价的列,应在DataTable的Columns集合中添加有DataColumn对象,并将设定其(A)属性为“Quantity*UnitPrice”。

A ExpressionB DataTypeC CaptionD ColumnName2.DataSet对象的Merge方法用于(A)A 将两个DataSet中的数据和架构合并到一个DataSet中B 将两个DataTable中的行合并到一个DataTable中C 向数据源提交修改D 从数据源提取数据3.某程序使用SQL 数据提供程序访问SQL Server数据库时出现SQLException异常,该异常的sqlError集合某个SqlError的严重程度可由其(C)属性获得。

A LineNumberB MessageC ClassD Number4.10.当SQL Error严重程度为(A)时,.NET触发SQL Conection对象的InfoMessage事件,而不是引发异常。

A 10B 17-19C 11-16D 20-256.为访问SQL Server 2000数据库中的数据,最好使用以下那种.NET数据提供者连接到数据库(A)A SQL B C D 7.在编写程序时,选择.NET数据提供程序的标准是(A)A 根据所访问的数据源的类型B 根据数据源是在本地机器还是远程机器上C 根据数据访问方式是断开还是连接D 根据程序是简单的C/S模式还是多层模式8.为了在程序中使用SQL Server .NET数据提供程序,应在源程序工程中添加对程序集(D)的引用。

A System.Data.Oledb.dllB System.Data.SQL.dllC System.Data.Odbc.dllD System.Data.dll9.为了在程序中使用ODBC .NET 数据提供程序,应在源程序工程中添加对程序集___D___的引用.A. System.Data.dllB. System.Data.SQL.dllC. System.Data.OleDb.dllD. System.Data.Odbc.dll10.使用OLE 数据提供程序时,连接字符串的(B)关键字指出要连接的OLEDB数据源类型A DriverB ProviderC Initial CatalogD Data Source11.位于工作站MyWork上的.NET应用程序,可以使用OLE 数据提供程序利用(D)连接到位于服务器DataServer上的Oraclegi数据库。

ADO.NET数据库访问技术

数据库访问技术⼀. 的定义来源于COM组件库ADO(即ActiveX Data Objects),是微软公司新⼀代.NET数据库的访问模型,是⽬前数据库程序设计⼈员⽤来开发基于.NET的数据库应⽤程序的主要接⼝。

它利⽤.NET Data Provider(数据提供程序)进⾏数据库的连接和访问,通过数据库程序能够使⽤各种对象来访问符合条件的数据库内容,让提供数据库管理系统的各个⼚商可以根据此标准开放对应的.NET Data Provider,这样设计数据库应⽤程序⼈员不必了解各类数据库底层运作的细节,只要掌握所提供对象的模型,便可访问所有⽀持.NET Data Provider的数据库。

结构模型如下所⽰:图1. 结构模型是⼀个类库,这些类提供了很多的对象,可⽤于完成数据库连接和增删查改等操作。

其中包括如下五个对象: 1)Connection:⽤来连接数据库(SQL Server使⽤的是SqlConnection对象); 2)Command:⽤来对数据库执⾏SQL命令,如增删查改等操作; 3)DataReader:⽤来从数据库中返回只读数据,⽤数据源填充DataSet对象; 4)DataAdapter:与DataSet对象相结合使⽤,实现对数据库的控制; 5)DataSet:可看作离线时内存中的数据库;这五个对象提供了两种读取数据库的⽅式;第⼀种⽅式:使⽤Connection、Command、DataReader,其权限只能读取或查询数据库;第⼆种⽅式:使⽤Connection、Command、DataAdapter、DataSet,其权限能进⾏各种数据库的操作。

读取数据库操作⽰意图:图1. 结构模型⼆. 使⽤在线访问数据库的步骤(这⾥⽤的是SQL Server 数据库)1. 连接数据库直接上⼀段代码:using System.Data.SqlClient;string source = "server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa";SqlConnection conn = new SqlConnection(source);conn.Open();// 对数据库数据进⾏操作conn.Close();(1). ⾸先添加命名空间System.Data.SqlClient;(2). 定义数据库连接字符串:第⼀种⽅法:直接把数据库连接字符串存放在字符串对象中,如上代码所⽰;第⼆种⽅法Web:将数据库连接信息存放在web.config配置⽂件中,然后通过使⽤ConfigurationStringSettings类进⾏调⽤。

ADONET数据库操作技术实验报告

实验报告题目:数据库操作技术院系:计算机科学与工程学院【实验题目】数据库操作技术【实验目的】1.掌握服务器验证控件的使用。

2.掌握对象的使用方法。

3.初步熟悉数据绑定控件GridView控件的使用方法。

【实验内容】使用DataReader对象设计一个用户登陆身份验证页面,页面打开时用户输入了正确的用户名和密码后,程序根据用户级别跳转到不同的页面。

建立Microsoft SQL Sever数据库manager.mdb的设计,并在其中创建存放用户信息的Admin表。

表中user字段表示用户名,pwd字段表示密码,level 字段表示用户级别,0表示管理员,1表示普通用户(游客)。

程序设计步骤:(1)设计Web页面Web页面的设计并不复杂,使用列表的形式,将Label和TextBox嵌入其中,如图4-1所示。

图 4-1 Web页面的设计(2)设置对象属性此处需要注意的是,密码部分需要做密文处理,并且不可进行复制粘贴。

(3)编写事件代码页面设计完成后,需要对登录按钮编写相应的时间。

其中包括与数据库的连接,获取输入的用户名和密码,之后与数据库进行匹配,并将匹配的结果返回给用户,同时程序根据用户级别跳转到不同的页面。

程序运行结果如图4-2所示。

图 4-2 程序运行结果【实验代码】Default:<%@Page Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default" %><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"><div><table border="1"><tr><td colspan="2"style="text-align: center"><strong><span style="font-size: 14pt">登&nbsp;录</span></strong></td></tr><tr><td style="width: 100px; text-align: center">用户名</td><td style="width: 100px"><asp:TextBox ID="txtUsername"runat="server"Width="146px"></asp:TextBox></td></tr><tr><td style="width: 100px; text-align: center">密&nbsp;码</td><td style="width: 100px"><asp:TextBox ID="txtPassword"runat="server"TextMode="Password" Width="145px"></asp:TextBox></td></tr><tr><td style="width: 100px">&nbsp;</td><td style="width: 100px"><asp:Button ID="btnLogin"runat="server"OnClick="btnLogin_Click" Text="登录"/></td></tr></table></div></form></body></html>using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.OleDb;public partial class_Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Title = "Reader对象应用示例";txtUsername.Focus();}protected void btnLogin_Click(object sender, EventArgs e){OleDbConnection conn = new OleDbConnection();conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + Server.MapPath("App_Data/manager.mdb");conn.Open();string strSQL = "select * from Admin";OleDbCommand com = new OleDbCommand(strSQL, conn);OleDbDataReader dr = com.ExecuteReader();string strUsername="", strPassword="",strLevel="";while (dr.Read()){if (txtUsername.Text == dr["user"].ToString() && txtPassword.Text ==dr["pwd"].ToString()){strUsername = dr["user"].ToString();strPassword=dr["pwd"].ToString();strLevel = dr["level"].ToString();break;}}dr.Close();conn.Close();if (strUsername == ""){Response.Write("<script language=javascript>alert('用户名或密码错!');</script>");return;}if (strLevel == "0"){Session["pass"] = "admin";Response.Redirect("manager.aspx");}else{Session["pass"] = "guest";Response.Redirect("guest.aspx");}}}Guest:<%@Page Language="C#"AutoEventWireup="true"CodeFile="guest.aspx.cs"Inherits="guest"%><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"></form></body></html>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class guest : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Title = "游客页面";string strPass = (string)Session["pass"];if (strPass != "guest"){Response.Redirect("default.aspx");}Response.Write("这是游客页面");}}Manager:<%@Page Language="C#"AutoEventWireup="true"CodeFile="manager.aspx.cs" Inherits="manager" %><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"></form></body></html>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class manager : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Title = "管理页面";string strPass = (string)Session["pass"];if (strPass != "admin"){Response.Write("<script language=javascript>alert('请先登录!');</script>"); Response.Redirect("default.aspx");}Response.Write("这是管理员页面");}}【实验结果】【实验心得】通过本次实验,我的的掌握更加深入,我基本掌握的服务器控件的应用,也基本掌握了GridView控件,熟悉了如何设置这个控件的基本属性,同时也加强了对其他控件的掌握。

ado.net参数传递之in

参数传递之in之前项⽬有⼀放⾏的功能,对某界⾯维护时(数据的增删改),先将数据保存到临时表中,放⾏后再真正的写⼊到库中。

由于设计到主从表多中约束关系,所以当时我采⽤的是写⼀个存储过程来对某个界⾯的操作进⾏统⼀处理,具体参见。

现在sa 说不得使⽤存储过程为由让更改(开发⽂档中写明: 尽量少⽤存储过程),⾃以为仅仅是将sql 挪⼀个位置,实际在修改中在 in 这个地⽅还是费了不少时间。

在谈及 in 之前,先说下参数传递的三种⽅式1. 字符串拼接 ' "+str+" ' ,很容易理解,好⽤,所谓的字符串拼接,对于⾮前台界⾯传⼊的参数可以直接这样写,可避免sql 注⼊,前台输⼊的参数若直接⽤此⽅法,则可被sql注⼊2. Parameter ,也常见,常规的操作直接传⼊参数即可如update: set = @name 此处name经过sql 编译后⾃动会加⼊单引号 ' '3. 占位符 {0},⽤String.Format 拼接,当某段sql中存在出现多次相同的参数时,⽤此⽅法⽐较⽅便,如果⽤2,则要写para1,para2,para3,若⽤3,只需要写⼀个 ‘{0}’上⾯的搞清楚了,现在来看⼀看 in 这个⽐较特殊的问题,当传递的参数本⾝就包含逗号时,就⽐较搅了,如 'a1,b1','a2,b2','a3,b3'诸如:⽤到IN的存储过程,需要转两个弯弯,先⽤EXEC( ' ' )包裹⼀遍,然后⾥⾯所⽤到的值都要加⼀个单引号,如'' D'' , 对于IN后带@的参数,为 '+@str+',普通的参数加两对单引号'''+@appuserid+'''EXEC('--刪除DELETE FROM AWHERE TableKey IN(SELECT TableKey FROM tempA WHERE sFlag = ''D'' AND ApplyUserID = '''+@appuserid+''' AND TableKey IN('+@str+'))--清空臨時資源表DELETE FROM tempZT_SysConfig_Master WHERE TableKey IN ('+@str+');')诸如:⼀般不需要⽤到存储过程、事务和IN关键字的SQl ⽽⾔,直接写⼊即可(成功)SELECT*FROM A WHERE ApplyUserID =@ApplyUserID诸如:带 IN 关键字的SQl,单个参数中不含逗号,如: 'A,B,C',或者参数含逗号,如 'a1,b1','a2,b2','a3,b3',采⽤如下⽅式去执⾏Sql,则为失败;若采⽤Trim('\'') 去掉⾸尾单引号,仍然失败。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档