ASP.NET提供了ADO.NET技术,它是ASP.NET应用程序与数据库进行交互的一种技术。

ADO.NET技术把对数据库的操作分为几个步骤,并为每个步骤提供对象来封装操作过程,从而使对数据库的操作变得简单易行。

ADO.NET组件通过以下两个主要的组件将数据访问与数据处理分离:

  1. ADO.NET体系结构的一个核心元素是.NET数据提供程序,它是专门为数据处理以及快速地只进、只读访问数据而设计的组件,包括Connection、Command、DataReader和DataAdapter对象的组件。

  2. DataSet是ADO.NET体系结构中另一个核心组件,它是专门为各种数据源的数据访问独立性而设计的,所以它可以用于多个不同的数据源、XML数据或管理应用程序的本地数据,如内存中的数据高速缓存。

基本的SQL

1.选择数据

  SELECT语句语法:

    SELECT 列名1,列名2,列名3,...FROM 表名(SELECT * FROM 表名),例如:

      SELECT * FROM Student

      该SQL语句表示从Student表中选取所有的列。

    SELECT 列名1,列名2,列名3,...FROM 表名 ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC,列名3 ASC/DESC...(ASC表示升序,DESC表示降序)

      SELECT * FROM Student ORDER BY StuName DESC。

      该SQL语句表示从Student表中选取所有的列并按照StuName降序排序。

    SELECT 列名1,列名2,列名3,...FROM 表名 WHERE子句 ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC,列名3 ASC/DESC... (WHERE子句是条件子句,WHERE子句能够对条件进行设置,只有满足条件的行才会显示到结果中)。

      SELECT * FROM Student WHERE StuClass=‘中药一班’

    有时选择条件不止一个,这时需要逻辑连接符把这些条件连接起来,常用的逻辑连接符有AND和OR,AND表示关系与,OR表示关系或。

      SELECT * FROM Student WHERE StuClass=‘中药一班’OR StuClass=‘中药二班’

2.插入数据

  INSERT INTO 表名(列名1,列名2,列名3,...)

  VALUES(值1,值2,值3,...)

  向Student表中添加一条数据,SQL语句如下:

    INSERT INTO Student(StuName,StuClass,StuSex)

    VALUES(‘李莹’,‘中药三班’,‘女’)

  也可以采用下面的语句实现:

    INSERT INTO Student

    VALUES(‘李莹’,‘中药三班’,‘女’)

    此语句忽略了列名,此时会按照列在数据表中的排列顺序逐个插入。在执行INSERT语句时值与列的数据类型必须一致,否则会报错。

3.更新数据

  UPDATE 表名 SET

  列名1=值1,

  列名2=值2,

  ...

  WHERE子句

  更新Student表中的数据:

    UPDATE Student Set

    StuClass=“中药四班”,

    WHERE StuName=“李莹”

4.删除数据

  DELETE FROM 表名 WHRER子句

在VS中执行数据查询

  查询数据可以使用SQL语句实现,也可以使用SQL SERVER提供的管理工具来生成和测试SQl语句。在VS中执行数据查询的操作如下:

    1.在“服务器资源管理器”窗口中,找到“表”节点。

    2.右键单击“表”节点,在弹出的菜单中选择“新建查询”。

    3.在弹出的“添加表”对话框中选择要操作的表、视图、函数、同义词,单击“添加”,在新建的查询窗口中会显示被选中的对象。

创建数据库

  在编写ASP.NET网站应用程序之前,首先要做的是设计和创建数据库。

连接数据库

  .NET Framework数据提供程序使用Connection对象提供与Microsoft SQL Server 的连接。

  SqlConnection连接字符串常用参数:

    1.Data Source:数据库服务器的名称。

    2.Initial Catalog:数据库的名称。

    3.Integrated Security:决定连接是否是安全的,取值可以是True、False或SSPI。

    4.User ID:SQL Server登录帐户。

    5.Password:SQL Server帐户的登录密码。

创建数据库连接

  

可以通过以下方式创建数据库连接:

  1.使用Connection对象创建数据库连接。

 SqlConnection connection=new SqlConnection();
connection.ConnectionString="server=localhost; Integrated Security=True;Initial Catalog=SuperMarket";

  2.使用连接字符串来初始化SqlConnection对象创建数据库连接。

 string connectionString = "Data Source=追风的蜗牛;Initial Catalog=Adrotator;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);

  3.使用构造函数来初始化SqlConnection对象创建数据库连接。

     构造函数

 public class ConnectionString
{
public static string connectionString = "Data Source=追风的蜗牛;Initial Catalog=Adrotator;Integrated Security=True";
}

  4.初始化SqlConnection对象,创建数据库连接。

SqlConnection connection = new SqlConnection(ConnectionString.connectionString);

  5.获取在配置文件中的<connectionStrings>节中利用键值对存储的数据库连接字符串,创建数据库连接。

    利用键值对存储数据库连接字符串。

 <connectionStrings >
<add name="connection1" connectionString="Data Source=追风的蜗牛;Initial Catalog=Adrotator;Integrated Security=True"/>
</connectionStrings>

    获取配置文件中的数据库连接字符串。

 SqlConnection connection = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["connection1"].ConnectionString.ToString());

查看连接信息

             try
{
connection.Open();
Response.Write("服务器版本:" + connection.ServerVersion.ToString());
Response.Write("<br>数据库名称:" + connection.Database.ToString());
Response.Write("<br>数据库连接:" + connection.State.ToString());
connection.Close();
}
catch (Exception ex)
{
Response.Write("连接错误!" + ex.Message.ToString());
}
finally
{
connection.Close();
}

获取数据

1.Command对象

  Command对象使用SELECT、INSERT、UPDATE、DELETE等SQL命令与数据源通信,此外,Command对象还可以调用存储过程操作数据库。

  创建Command对象的方法:

    1.创建Command对象,指定SQL命令,设置可利用的数据库连接。

 SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "select * from Advertisements";

    

    2.在创建Command对象时指定SQL命令和可利用的数据库连接。

 SqlCommand command = new SqlCommand("select * from Advertisements", connection);

2.DataReader对象 

  可以使用DataReader从数据库中检索只读、只进的数据流。“只读”,是指在数据阅读器DataReader上不可更新、删除、增加记录。“只进”是指记录的接收是顺序进行且不可后退的。

  数据阅读器DataReader接收到的数据是以数据库的记录为单位的。查询结果在查询执行时返回,并存储在客户端的网络缓冲区中,直到用户使用DataReader的Read方法对它们发出请求。

  使用DataReader可以提高应用程序的性能,原因是它只要数据可用就立即检索数据,并且在默认情况下一次只在内存中存储一行,减少了系统开销。

  在创建一个Command对象的实例之后,可以通过对命令调用ExecuteReader方法来创建DataReader,该方法从在Command对象中指定的数据源检索一些行,填充DataReader。

  使用

    1.获取数据并绑定到控件中。

      在Default.aspx中:

     <div>
<asp:Label ID="Label1" Text="请选择:" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="请选择" Enabled="true"></asp:ListItem>
</asp:DropDownList>
<br />
<asp:Label ID="Label2" runat="server" Text="广告的详细信息:" />
<br />
<asp:Label ID="Label3" runat="server" Height="200" Width="300" />
</div>

      在Default.aspx.sc中:

  protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
SqlCommand command = new SqlCommand("select AlternateText,ID from Advertisements", connection);
SqlDataReader dataReader;
try
{
connection.Open();
dataReader = command.ExecuteReader(); while (dataReader.Read())
{
ListItem listItem = new ListItem();
listItem.Text = dataReader["AlternateText"].ToString();
listItem.Value = dataReader["ID"].ToString();
DropDownList1.Items.Add(listItem);
}
dataReader.Close();
}
catch (Exception ex)
{
Label3.Text = "读取失败" + ex.Message.ToString();
}
finally
{
connection.Close();
}
}
}

    2.获取控件数据信息并查询。

      在Default.aspx.sc中:

         protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["connection1"].ConnectionString.ToString());
string selectSql = "select * from Advertisements where ID='" + DropDownList1.SelectedItem.Value + "'";//定义SQL语句获取广告信息 SqlCommand command = new SqlCommand(selectSql, connection);
SqlDataReader dataReader;
try
{
connection.Open();
dataReader = command.ExecuteReader();
dataReader.Read();
string stringText;
stringText ="ID:"+ dataReader["ID"].ToString() + "<br>" +"图片地址:"+ dataReader["ImageUrl"].ToString() + "<br>" +"链接地址:"+ dataReader["NavigateUrl"].ToString() + "<br>" +"显示频率:"+ dataReader["Impressions"].ToString() + "<br>" +"描述信息:"+ dataReader["AlternateText"].ToString();
Label3.Text = stringText.ToString();
dataReader.Close(); }
catch (Exception ex)
{
Label3.Text = "读取失败" + ex.Message.ToString();
}
finally
{
connection.Close();
}
}

3.DataAdapter对象

  DataAdapter对象充当数据库和ADO.NET对象模型中非连接对象之间的桥梁,能够用来保存和检索数据。DataAdapter对象类的Fill方法用于将查询结果引入DataSet或DataTable中,以便能够脱机处理数据。根据不同的数据源DataAdapter对象,可以分为四类:

    1.SqlDataAdapter:用于对SQL Server数据库执行命令。

    2.OleDBDataAdapter:用于对支持OleDB的数据库执行命令。

    3.OdbcDataAdapter:用于支持Odbc的数据库执行命令。

    4.OracleDataAdapter:用于对Oracle数据库执行命令。

  使用SqlDataAdapter的步骤:

    1. 建立数据库连接。

    2. 建立SqlCommand对象,设置要执行的SQL语句

    3. 建立并实例化一个SqlDataAdapter对象。

    4. 建立一个DataSet对象,用于接收执行SQL命令返回的数据集。

    5. 填充数据集。

    6. 绑定数据控件。

    7. 关闭数据库连接。

4.DataSet对象

  DataSet在ADO.NET对实现从数据库抽取数据起到关键作用,数据从数据库完成数据抽取后存放在DataSet中,是各种数据源中的数据在计算机内存中映射成的缓存,从某种意义上可以把DataSet可以看成是一个数据容器。

  DataSet也被称为内存中的数据库,因为在DataSet可以包含很多数据表以及数据表之间的关系。

  DataSet在客户端实现读取、更新数据库等过程中起到了中间部件的作用。

  DataSet从数据源中获取数据后就会断开与数据源之间的连接。允许在DataSet中定义数据约束和表关系,增加、删除和编辑记录,还可以对DataSet中的数据进行查询、统计等。当完成了各项操作以后还可以把DataSet中的数据送回数据源。DataSet的产生满足了多层分布式程序的需要,它能够在断开数据源的情况下对存放在内存中的数据进行操作,这样可以提高系统整体性能,而且有利于扩展。

  创建DataSet的方式

  

    1.建立一个空的数据集,然后再把建立的数据表放到该数据集里。

      DataSet dataSet = new DataSet();

    2.先建立数据表,然后再建立包含数据表的数据集。

      DataSet dataSet = new DataSet(“表名”);

  DataSet中经常使用的类

    1.DataTable。称为数据表,用来存放数据。一个Dataset对象可以包含多个DataTable,每个DataTable可以包含多个DataRow和DataColumn。

      它的创建方式有两种:

        1.数据加载DataSet时会自动创建DataTable。

        2.以编程方式创建DataTable的对象,然后将对象添加到DataSet的Tables集合中。

      从DataSet中提取DataTable

        DataSet dataset=new DataSet();

        DataTable dataTable=dataset.数据表名

    2.DataRow。数据表里的行,是给定DataTable中的一行数据(记录)。DataRow对象的方法提供了对表中数据的增加、删除、更新、查询等功能。

      提取表中的一行数据(记录)

        DataRow dataRow=DataTable.Row[n];

    3.DataColumn。数据表中的列,定义了数据表的数据结构。

      获取某列的值需要在数据行的基础上进行

        string str=dataRow.Column[“字段名称”].ToString();

       或string str=dataRow.Column[“索引”].ToString();

    4.DataRelation。

      使用DataRelation通过DataColumn对象将两个DataTable对象相互关联,此类关系类似于关系数据库中的主键/外键关系。关系是在父表和子表中匹配的列之间创建的,两个列的数据类型必须相同。

      创建DataRelation时,首先要验证是否可以创建关系。在将它添加到DataRelationCollection之后,通过禁止会使关系无效的任何更改来维持此关系。在创建DataRelation和将其添加到DataRelationCollection之间的这段时间,可以对父行或子行进行其他更改,但是会使关系失效,会产生异常。

  使用

    在配置文件中添加以下内容:

 <connectionStrings >
<add name="connection1" connectionString="Data Source=追风的蜗牛;Initial Catalog=Adrotator;Integrated Security=True"/>
</connectionStrings>

    在Default.aspx.cs中添加以下内容:

 <div>
<asp:Label ID="Label1" Text="请选择:" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="请选择" Enabled="true"></asp:ListItem>
</asp:DropDownList>
<br />
<asp:Label ID="Label2" runat="server" Text="广告的详细信息:" />
<br />
<asp:Label ID="Label3" runat="server" Height="200" Width="300" />
</div>

    Default.aspx.cs中的代码如下:

 using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WebApplication1
{
public partial class Default : System.Web.UI.Page
{
private static DataSet dataSet = new DataSet();
public class ConnectionString
{
public static string connectionString = "Data Source=追风的蜗牛;Initial Catalog=Adrotator;Integrated Security=True";
} protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
fillList();
}
} protected void fillList()
{
SqlConnection connection = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["connection1"].ConnectionString.ToString());
SqlCommand command = new SqlCommand("select * from Advertisements", connection);
SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
//打开数据库连接,读取信息
try
{
connection.Open();
//填充Dataset
dataAdapter.Fill(dataSet, "Advertisements");
}
catch (Exception ex)
{
Label3.Text = "读取错误" + ex.Message.ToString();
}
finally
{
connection.Close();
}
foreach (DataRow row in dataSet.Tables["Advertisements"].Rows)
{
ListItem item = new ListItem();
item.Text = row["AlternateText"].ToString();
item.Value = row["ID"].ToString();
DropDownList1.Items.Add(item);
}
} protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
DataRow[] dataRow = dataSet.Tables["Advertisements"].Select("ID=" + DropDownList1.SelectedItem.Value);
string stringText = "ID:" + dataRow[]["ID"].ToString() + "<br/>图片地址:" + dataRow[]["ImageUrl"].ToString() + "<br/>链接地址:" + dataRow[]["NavigateUrl"].ToString() + "<br/>显示频率:" + dataRow[]["Impressions"].ToString() + "<br/>描述:" + dataRow[]["AlternateText"].ToString();
Label3.Text = stringText.ToString();
}
catch (Exception ex)
{
Label3.Text = "读取失败" + ex.Message.ToString();
}
}
}
}

ADO.NET数据库的更多相关文章

  1. ADO多线程数据库总结

    ADO多线程数据库查询通常会出现以下问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  2. 用ADO操作数据库的方法步骤(ZT)

    http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包 ...

  3. ADO.Net 数据库 删除

    删除数据库里的信息和之前增加,修改大同小异,其写法更加简单,也是把SQL语句写为删除语句 删除一条数据,只需要获取并接收到这条数据唯一的能够代表这条数据的信息,比如主键 代码演示: using Sys ...

  4. ADO.Net 数据库修改

    数据库的修改方法和增加一样,只是把增加语句换成了修改语句,后面执行语句是相同的 首先也是需要获取并接收输入的要修改的哪个数据以及修改后的数据 代码演示: using System; using Sys ...

  5. VC++下使用ADO操作数据库

    VC++下使用ADO操作数据库主要要用到 _ConnectionPtr,_CommandPtr,_RecordsetPtr三个ADO对象指针,我查找了相关资料,发现网上源码很多,但是都相对凌乱,于是自 ...

  6. 摘:用ADO操作数据库的方法步骤

    用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口 ...

  7. 用ADO操作数据库的方法步骤

    用ADO操作数据库的方法步骤 学习ADO时总结的一些经验 - 技术成就梦想 - 51CTO技术博客 http://freetoskey.blog.51cto.com/1355382/989218   ...

  8. Delphi通过ADO链接数据库及对数据库的增加,删除,修改,读取操作实例教程4

    ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据.ADO(ActiveXDataObjects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关 ...

  9. ADO.NET数据库编程

    ADO.NET数据库编程 1.ADO.NET的相关概念. Microsoft的新一代技术,是ADO组件的后继者. 主要目的是在.NET Framework平台存取数据. 提供一致的对象模型,可以存取和 ...

  10. Delphi通过ADO读写数据库

    ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据. ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实 ...

随机推荐

  1. 基于HTML5的多张图片上传

    图片上传之前也有写过demo,不过是单张上传的,最近有个业务需求是需要多张上传的,于是乎从新改写了一下 HTML结构: 1 2 3 4 <div class="container&qu ...

  2. QT学习之路---信号槽

    #include<QApplication> #include<QPushButton> int main(int argc,char *argv[]) { QApplicat ...

  3. maven项目导入报错

    极大可能是仓库设置问题

  4. java异常分类(运行时异常,可检查异常)

    NullPointerException:是运行时异常(RuntimeException),也叫非检查异常 所以我们抛出该类异常实例时,方法声明处无需添加throws来列举该类异常的抛出,编译器在编译 ...

  5. .NET 集合操作性能

    如果单元格的内容是na(not applicatable),就表示这个操作不能应用于这种集合类型.

  6. GridControl 继承写法修改自己的GridControl

    namespace GridControlDemo { class MyGridControl : GridControl { protected override BaseView CreateDe ...

  7. HYSBZ 1061 志愿者招募 【最小费用流】【差分】【最小费用流模板】

    #include<stdio.h> #include<queue> #define MAXN 1003 #define MAXM 10002*4 #define INF 100 ...

  8. 源码解读—HashMap

    什么是HashMap ? hashMap是用什么基础数据结构实现的?HashMap是如何解决hashCode冲突的? hashMap的基础容器是数组+链表(transient Entry[] tabl ...

  9. 【LOB】使用USER_LOBS视图获得当前用户包含LOB字段的表

    包含LOB类型字段的表往往需要特殊关照,如何快速的获得包含LOB对象的数据库表?使用DBA_LOBS.ALL_LOBS和USER_LOBS视图可以很方便地获得包含BLOB或CLOB字段的表. 简单看一 ...

  10. 安装 chardet ,出现ImportError: No module named setuptools

    原因:在linux的机子上没有setuptools 可能此机子上的python版本过低 http://www.cnblogs.com/kkgreen/archive/2012/08/02/262042 ...