【网学提醒】:本文主要为网上学习者提供asp.net中的namespace 命名空间,希望对需要asp.net中的namespace 命名空间网友有所帮助,学习一下吧!
asp.net中的namespace 命名空间的简单说明
假如你使用一个程序库,他里面有桓霰淞拷衋bc,但是你自己也不小心定义了一个叫abc的变量,这样就会引起重定义错误.所以为了避免这种现象,C++引入了名字空间(namespace)的概念,编写
程序库的时候最好把所有东西放在一个namespace中,例如
namespace MY
{
int abc;
char cab;
}
这样,你在外界就要通过MY::abc来访问MY里面的abc,而如果你自己在外面定义了一个叫abc的变量,不会引起重定义的错误.直接调用abc会调用你自己定义的abc,而只有用MY:abc才会真正调用出MY里面的abc
但是这样未免太麻烦,如果你确保你不会重复使用别人
程序库里的名字,你就可以把他的名字空间里所有名字全部调出,这个过程就是using namespace,例如我输入
using namespace MY;
这样,下面我再调用abc时,就会自动调用MY里面的abc了
关于Namespace(命名空间)的使用
在前面的
程序中我们看到,我常用<% @ Import Namespace="System.Data" %>,这是在引用M$为我们提供的Namespace,这和ASP不同的,我们在ASP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能。其实说白了,一个Namespace; 就是一个组件。这个是关于ASP.net的高级应用,我会在后面的章节讲。(不过要写到那里,时间......)
我下面简单的列举一些常用的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之类的),这里由于飞刀的数据库是SQL Server,本来可以用ADO,但是想想M$单独把SQL独立出来,为何不用呢。至于它能带来多少好处,飞刀没有测试过,对SQL Server肯定要比ADO好一点啦。
无论是ADO还是SQL ,他们都有几个基本的对象用于操作
Connections 连结到一个数据库,以便于后面的应用(类似ADO中的Connections)
Commands 执行SQL语句的地方
DataReader 读取执行后返回的数据内容
DataSet 储存数据,功能强大,我们会具体讲解
DataSetCommand 执行SQL语句,并把数据存入DataSet
这里面可能最难理解的就是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() 克隆一个联结。(呵呵,绵羊可以Connection我也可以)
我们也通过一个小例子来看看他们的用法:
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>
在上面的例子中我们建立SQLCommand对象时引用了两个参数(strIndex,MyConnection),从源
程序中我们也可以看出来strIndex代表的是执行的SQL语句,MyConnection是我们先前建立的联结.然后我们就要先打开MyConnnection,然后再执行这个SQL语句。我们在这里执行用的是ExecuteNonQuery()方法,这样不返回记录集,只是返回受影响的记录个数。
这里我们打开和关闭数据库也可以这样做。
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();
所得结果和先前的一样。所以执行一条SQL语句有很多种方法。而且还不只两种,我们后面学了DataSetCommand,那打开方法就是N种了:)这就需要看你的习惯和
程序的要求了;)
我们先来看看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";
stringmyC;
SQLCommand myCommand = new SQLCommand(mySelectQuery);
myCommand.ActiveConnection = new SQLConnection(myConnectString);
myCommand.CommandTimeout = 15;
myCommand.CommandType = CommandType.Text;< /FONT >
我现在感到学好C#就是就是要知道,C#的基本语法,C#的新的特点,C#能干什么!
其中我感到不管如何,NAMESPACE都是很关键的,可以说不是只对C#而言,而是整个。NET都是由NAMESPACE组成的,所以我在看了C#的基本语法后,就直奔NAMESPACE来了,在这里写下自己的一些感觉,希望能对后面学习的人有所帮助。
NAMESPACE在新的NET环境下编程可以说是无所不在,总之,给我的感觉就是MS的新一代的语言的核心就是NAMESPACE,我们可以通过已经有的NAMESPACE,做我们想做的和愿意做的,当然如果你感觉现有的还不够你的使用的话,你也可以自己来使用现有的来扩展,创建自己的NAMESPACE!(感觉怎么很象以前的COM、DCOM呢?)
下面我门说说如何建立一个NAMESPACE!
定义一个NAMESPACE首先需要包含关键词:namespace
格式如下:
namespace Your_nsname
{
//namespase主体内容;
}
呵呵,给我的感觉就好象和Class或Struct一样。不过他们除了形式有类似外,确实在很多方面都不相同,具体我们以后会慢慢说到!先往下看。。。
在一个NAMESPACE的主体内,可以引用其他的NAMESPACE!例如:
namespace Your_nsname{
//下面引用System和System.Xml着两个NAMESPACE;
using System;
using System.Xml;
//namespase主体内容;
}
在上面有一个需要注意的就是,如果要引用NAMESPACE的话,那么应该在申明其它类型前引用,如下是错误的:
namespace Your_nsname{
//其它一些内容;
//由于引用System和System.Xml放到了其它语句之后,所以。。。
using System;
using System.Xml;
}
另外对于NAMESPACE还有一个有趣的地方,就是。。。
我们先看一下下面的的两个方式:
方式一、
namespace N1.N2
{ class A {}
class B {}
}
方式二、
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
在上面的良种方式中,第二种很容易就能看懂,是在NAMESPACE N1中再创建一个NAMESPACE N2,而N2中有两个类(class)A、B!那么第一种呢?其实上面两个方式定义的其实是一模一样的。NAMESPACE是可以嵌套定义的,我们可以使用第二种方式,层次感觉比较清楚,也可以使用第一种方式,所不同的是,第一中方式中,在N1和N2之间必须用分隔符“.”来表明他们两者之间的层次关系!
在使用的时候用如下的方式:
N1.N2.A;
N1.N2.B;