关于Namespace(命名空间)的使用,我常用
< % @ Import Namespace="System.Data" %>
我下面简单的列举一些常用的Namespace
< % @ Import Namespace="System.Data" %> 处理数据时用到 < % @ Import Namespace="System.Data.ADO" % > 使用ADO.net ; 时用到 < % @ Import Namespace="System.Data.SQL" %> SQL Server 数据库专用 < % @ Import Namespace="System.Data.XML" %> 不用看处理XML用到 < % @ Import Namespace="System.IO" %> 处理文件时用到 < % @ Import Namespace="System.Web.Util" %> 发邮件时大家会用到 < % @ Import Namespace="System.Text" %> 文本编码时用到
讲解了Namespace,我们可以正式来讨论数据库的应用了。
从上面的可以看出,我们操作数据库,我们需要引用下面两个Namespace
< % @ Import Namespace="System.Data" %> < % @ Import Namespace="System.Data.SQL" %>
其实System.Data.SQL 可以用System.Data.ADO来代替,SQL是SQL Server专用,ADO可以支持任何数据库(只要在主机上存在相应的驱动就行了,如Access,Mysql,Oracle之类的)。
无论是ADO还是SQL ,他们都有几个基本的对象用于操作
Connections 连结到一个数据库,以便于后面的应用(类似ADO中的Connections) Commands 执行SQL语句的地方 DataReader 读取执行后返回的数据内容 DataSet 储存数据,功能强大,我们会具体讲解 DataSetCommand 执行SQL语句,并把数据存入DataSet
Connections(SQLConection 或者 ADOConnection)
它的主要任务就是建立一个与数据库服务器的连接
< % @ Page Language="C#" %> < % @ Import Namespace="System.Data" %> < % @ Import Namespace="System.Data.SQL" %> <script Language= "C#" Runat= "Server"> public void Page_Load(Object src,EventArgs e) { stringstrProvider="server=localhost;uid=sa;pwd=;database=aspcn"; SQLConnection MyConnection=new SQLConnection(strProvider); } </script>
上面我们建立了一个名为MyConnection的联结,就好像我们在ASP中用ADODB.Connection打开了一个联结,这个联结我们在Command或者DataSetCommand中将会使用。
它的一些有用的属性和方法有
ConnectionString 取得或设置连结数据库的语句 ConnectionTimeout 取得或设置连结数据库的最长时间,也是就超时时间 DataBase 取得或设置在数据库服务器上要打开的数据库名 DataSource 取得或设置DSN,大家不会陌生吧:) Password 取得或设置密码 UserID 取得或设置登陆名 State 取得目前联结的状态 Open() 打开联结 Close() 关闭联结 Clone() 克隆一个联结。
我们也通过一个小例子来看看他们的用法:
SQLConnection myConnection = new SQLConnection(); myConnection.DataSource = "mySQLServer"; myConnection.Password = ""; myConnection.UserID = "sa"; myConnection.ConnectionTimeout = 30; myConnection.Open(); myConnection.Database = "northwind"; myConnection.IsolationLevel = IsolationLevel.ReadCommitted Commands(SQLCommand 或者 ADOCommand)
< % @ Page Language="C#" %> < % @ Import Namespace="System.Data" %> < % @ Import Namespace="System.Data.SQL" %> <script Language="C#" Runat="Server"> public void Page_Load(Object src,EventArgs e) { stringstrProvider="server=localhost;uid=sa;pwd=;database=aspcn"; string strIndex="select * from aspcn where purview='webmaster'"; SQLConnection MyConnection=new SQLConnection(strProvider); SQLCommand MyCommand = new SQLCommand(strIndex,MyConnection); MyConnection.Open(); //打开联结 MyCommand.ExecuteNonQuery(); //执行SQL,但不返回任何记录 MyConnection.Close(); } </script>
这里我们打开和关闭数据库也可以这样做。
stringstrProvider="server=localhost;uid=sa;pwd=;database=aspcn"; string strIndex="select * from aspcn where purview='webmaster'"; SQLConnection MyConnection=new SQLConnection(strProvider); SQLCommand MyCommand = new SQLCommand(strIndex,MyConnection); MyCommand.ActiveConnection.Open(); MyCommand.ExecuteNonQuery(); MyCommand.ActiveConnection.Close();
我们先来看看Command常用的方法和属性
ActiveConnection 取得或设置联结Connections CommandText 执行的SQL语句或储存过程(StoredProcedure)名 CommandTimeout 执行的最长时间 CommandType Command操作的类型(StoredProcedure,Text,TableDirect)三种,默认Text Parameters 操作储存过程时使用 Execute() 执行SQL语句或储存过程 ExecuteNonQuery() 同上,区别在于不返回记录集 Clone() 克隆Command
string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID"; stringmyConnectString="userid=sa;password=;database=northwind;server=mySQLServer"; SQLCommand myCommand = new SQLCommand(mySelectQuery); myCommand.ActiveConnection = new SQLConnection(myConnectString); myCommand.CommandTimeout = 15; myCommand.CommandType = CommandType.Text;