一、ADO.NET 访问数据

ADO.NET 提供了用于完成数据库连接、查询数据、插入数据、更新数据和删除数据等操作的对象。

主要包括五个对象

1Connection对象:用来连接数据库。

2Command对象:用来对数据库执行SQL命令。

3DataReader对象:用来从数据库中返回只读数据。

4DataAdapter对象:用来从数据库中返回数据,并填充到DataSet对象中,还要负责保证DataSet对象中的数据和数据库中的数据保持一致。

5DataSet对象:可以看作是内存中的数据库。

这五个对象提供了两种读取数据库的方式:

一是利用ConnectionCommandDataReader对象,这种方式只能读取数据库;

二是利用ConnectionCommandDataAdapterDataSet对象,这种方式可以对数据库进行各种操作。

要把访问到的数据显示出来,就需要数据绑定控件,此处使用GridView控件

前端WebForm1.aspx代码

数据源控件若要显示数据,需要设置数据源的DataSource属性为查询结果,并调用DataBind()方法显示数据

后端WebForm1.aspx.cs代码

using System;

using System.Data;

using System.Data.SqlClient;

namespace ASPSQL

{

public partial class WebForm1 : System.Web.UI.Page

{

string constr = “server=127.0.0.1,14133;database=serverdb;Integrated Security=True;”;

protected void Page_Load(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(constr);

string comstr = “select * from sensorinfo”;

SqlCommand cmd = new SqlCommand(comstr, conn);

SqlDataAdapter adapter = new SqlDataAdapter(cmd);

DataSet ds = new DataSet();

conn.Open();

adapter.Fill(ds);

GridView1.DataSource = ds;

GridView1.DataBind();

conn.Dispose();

}

}

}

控件中的每个GridView列都由一个DataControlField对象表示。默认情况下,AutoGenerateColumns属性设置为true,这会为数据源中的每个字段创建一个AutoGenerateField对象,然后每个字段将按照每个字段在GridView数据源中的显示顺序呈现为控件中的列。

SqlDataAdapter.Fill(DataSet) :DataSet中添加或刷新行。

GridView.DataSource :获取或设置对象,控件从该对象中检索其数据项列表。

GridView.DataBind:将数据源绑定到GridView控件。

运行后页面如下

二、数据源控件访问数据

ADO.NET 提供了多种不同的数据源控件

1EntityDataSource:用于访问基于实体数据模型的数据。

2LinqDataSource:利用LINQ技术访问数据库。

3ObjectDataSource:用于访问多层Web应用程序体系结构中的中间层业务数据对象。

4SiteMapDataSource:用于访问XML格式的网站地图文件Web.sitemap

5SqlDataSource:用于访问AccessSQL ServerSQL Server ExpressOracleODBC数据源和OLEDB数据源。

6XmlDataSource用于访问具有“层次化数据”特性的XML数据源。

在VisualStudio中SqlDataSource默认不安装,在Visual Studio Installer程序“单个组件”选项页中,找到“云、数据库和服务器”-“SQL Server Data Tools”后安装。

1、创建Web窗体文件(WebForm1.aspx)后,将“工具箱”-“数据”-“SqlDataSource”控件拖入aspx文件设计窗口中

点击控件”配置数据源”

2、将“工具箱”-“数据”-“GridView”控件拖入aspx文件设计窗口中,为控件”选择数据源”

查看WebForm1.aspx的”源”视图,可以看到源代码

” ProviderName=”” SelectCommand=”SELECT * FROM [channelInfo]”>

连接字符串包含了访问数据库的相关信息,通常存储在Web.config文件的元素中。

SQL Server数据库的身份验证有Windows验证和SQL Server验证两种模式。

各参数具体含义如下

1Server参数:数据库服务器,使用方式为“Server=服务器名“,其中服务器名就是数据库服务器的实例名称。该参数在设置的时候还可以使用Data 2SourceAddressAddr

3Database参数:使用的数据库名称。该参数还有一个别名Initial Catalog,也可以设置为“Initial Catalog=数据库名

UserID Password参数:UserID为连接数据库验证用户名,也可以使用UIDPassword为连接数据库验证密码,也可以使用PWD

如果SQL Server设置为Windows登陆,则需要使用Trusted_Connection=SSPI或Trusted_Connection=true或Integrated Security=SSPI来进行登陆,表示以当前Windows系统用户身份去登陆SQL SERVER服务器(信任连接)。

运行后页面如下

三、LINQ访问数据

LINQ有不同的LINQ类型

LINQ to Objects:用于处理ArrayList等集合类型数据;

LINQ to XML 用于处理XML类型数据

LINQ to DataSet 用于处理DataSet类型数据

LINQ to SQL用于处理SQL Server数据库类型数据

LINQ to Entites用于处理实体数据模型

在VisualStudio中SqlDataSource默认不安装,在Visual Studio Installer程序“单个组件”-“代码工具”-“LINT to SQL工具”后安装。

“解决方案资源管理器”中右击项目名称,在弹出的菜单中选择”添加”-“新建项”-“LINQ to SQL类”

点击”服务器资源管理器”-右键点击”数据连接”-选择”添加连接”,添加SQL数据库

LINQ to SQL为关系数据库提供了一个对象模型,即将关系数据库映射为类对象,将左侧数据库中的数据表拖入DataClasses1.dbml窗口,将在DataClasses1.designer.cs中自动创建对应的类。

建立DataClasses1.dbml文件的同时同时创建DataClasses1.dbml.ayout和DataClasses1.designer.cs文件。

DataClasses1.dbml.layout定义了每个表的布局,DataClasses1.designer.cs定义了自动生成的类

DataClasses1DataContext类派生自DataContext,与SQL数据库对应。

创建类实例时

DataClasses2DataContext ds= new DataClasses2DataContext();

错误提示:不包含采用0个参数的构造函数

原因是类中没有定义无参数构造函数

可以在DataClasses1.designer.cs文件中创建无参数构造函数

public DataClasses1DataContext() :

base(“Data Source=127.0.0.1,14133;Initial Catalog=serverdb;Integrated Security=True;Encrypt=False”, mappingSource)

{

OnCreated();

}

在WebForm1.aspx.cs文件中创建查询函数

常使用关键字var的隐形变量存放返回的数据。

var变量可以不明确地指出数据类型,但编译器能根据变量的表达式推断出该变量的类型。

using System;

using System.Linq;

namespace WebApplication4

{

public partial class WebForm1 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

DataClasses1DataContext ds= new DataClasses1DataContext();

var results = from r in ds.channelInfo

select r.name;

GridView1.DataSource = results;

GridView1.DataBind();

}

}

}

LINQ查询表达式类似于SQL语句,包含8个基本自居

查询表达式必须以from子句开始,以select或group子句结束,中间可以包含一个或多个from、where、orderby、group、join、let等子句。

在WebForm1.aspx文件中展示数据

运行后页面如下