做者:飞刀
关于Namespace(命名空间)的使用经常使用<% @ Import Namespace="System.Data" %>,这是在引用M$为咱们提供的Namespace,这和ASP不一样的,咱们贏SP.net必须先引用与咱们操做有关的Namespace后才能使用相应的功能。其实说白了,一个Namespace; 就是一个组件我下面简单的列举一些经常使用的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";
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;
原文连接:http://blog.csdn.net/21aspnet/article/details/159998sql