访问基于 SQL 的数据

访问基于 SQL 的数据
===========================================================

应用程序一般需要对 SQL 数据库执行一个或多个选择、插入、更新或删除查询。下表显示上述每个查询的示例。

查询  示例 
简单选择  SELECT * from Employees WHERE FirstName = 'Bradley'; 
联接选择  SELECT * from Employees E, Managers M WHERE E.FirstName = M.FirstName; 
插入  INSERT into Employees VALUES ('123-45-6789','Bradley','Millington','Program Manager'); 
更新  UPDATE Employees SET Title = 'Development Lead' WHERE FirstName = 'Bradley'; 
删除  DELETE from Employees WHERE Productivity < 10; 

为了使页能够访问执行 SQL 数据访问所需的类,必须将 System.Data 和 System.Data.SqlClient 命名空间导入到页中。


<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

若要对 SQL 数据库执行选择查询,请创建与数据库的 SqlConnection,传递连接字符串,然后构造包含查询语句的 SqlDataAdapter 对象。若要用查询结果填充 DataSet 对象,请调用命令的 Fill 方法。


C#
*********************************************
SqlConnection myConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);

DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
*******************************************

VB
*******************************************
Dim myConnection As New SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes")
Dim myCommand As New SqlDataAdapter("select * from Authors", myConnection)

Dim ds As New DataSet()
myCommand.Fill(ds, "Authors")
*******************************************

JScript
*******************************************
var myConnection:SqlConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
var myCommand:SqlDataAdapter = new SqlDataAdapter("select * from Authors", myConnection);

var ds:DataSet = new DataSet();
myCommand.Fill(ds, "Authors");
*******************************************

正如本节前面所提到的,使用数据集的好处是它为您提供了断开连接的数据库视图。可以在应用程序中操作数据集,然后在以后协调更改和实际的数据库。对于长期运行的应用程序,这通常是最好的方法。对于 Web 应用程序,通常对每个请求执行短操作(一般只是显示数据)。通常不需要在一系列请求间保持 DataSet 对象。对于这类情况,可以使用 SqlDataReader。

SqlDataReader 对从 SQL 数据库检索的数据提供仅向前的只读指针。若要使用 SqlDataReader,请声明 SqlCommand 而不是 SqlDataAdapter。SqlCommand 公开返回 SqlDataReader 的 ExecuteReader 方法。还请注意,当使用 SqlCommand 时,必须显式打开和关闭 SqlConnection。调用 ExecuteReader 后,SqlDataReader 可以绑定到 ASP.NET 服务器控件,正如将在下一节看到的。

C#
*******************************************
SqlConnection myConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlCommand myCommand = new SqlCommand("select * from Authors", myConnection);

myConnection.Open();


SqlDataReader dr = myCommand.ExecuteReader();

...

myConnection.Close();
*******************************************

VB
*******************************************
Dim myConnection As SqlConnection = New SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes")
Dim myCommand As SqlCommand = New SqlCommand("select * from Authors", myConnection)

myConnection.Open()


Dim dr As SqlDataReader = myCommand.ExecuteReader()

...

myConnection.Close()
*******************************************

JScript
*******************************************
var myConnection:SqlConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
var myCommand:SqlCommand = new SqlCommand("select * from Authors", myConnection);

myConnection.Open();

var dr : SqlDataReader;
dr = myCommand.ExecuteReader();

...

myConnection.Close();
*******************************************

当执行不要求返回数据的命令(如插入、更新和删除)时,也使用 SqlCommand。该命令通过调用 ExecuteNonQuery 方法发出,而该方法返回受影响的行数。注意当使用 SqlCommand 时,必须显式打开连接;SqlDataAdapter 自动为您处理如何打开连接。


C#
*******************************************
SqlConnection myConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlCommand myCommand = new SqlCommand(
                   "UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'",
                    myConnection);

myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
*******************************************

VB
*******************************************
Dim myConnection As New SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes")
Dim myCommand As New SqlCommand( _
                   "UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'",  _
                    myConnection)

myCommand.Connection.Open()
myCommand.ExecuteNonQuery()
myCommand.Connection.Close()
*******************************************

JScript
*******************************************
var myConnection:SqlConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
var myCommand:SqlCommand = new SqlCommand(
                   "UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'",
                    myConnection);

myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
*******************************************
 
重要说明:始终记住在页完成执行之前关闭与数据模型的连接。如果不关闭连接,则可能会在等待页实例被垃圾回收处理期间不经意地超过连接限制。  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值