作业帮 > ASP.NET > 教育资讯

asp.net教程:asp.net中静态的类和成员函数都是静态的

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 05:04:42 ASP.NET
asp.net教程:asp.net中静态的类和成员函数都是静态的
asp.net教程:asp.net中静态的类和成员函数都是静态的ASP.NET
【51Test.NET-asp教程:asp中静态的类和成员函数都是静态的】:
  我们了解一下asp中静态类和成员函数,正如标题所说,他们都是静态的,看看作者是如何解析的吧。
  为什么标题说都是静态的呢?因为他们都是有static修饰符作用下的,由static所修饰的类或者成员都是静态类或者静态成员,其实我也比较喜欢使用静态类和静态方法了,给大伙看下这个静态的类和静态的成员函数,怀旧下单层封装思想,呵呵..
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Web;
using System.Data.OleDb;
using System.Data;

namespace Sophie
{
///
/// db 的摘要说明。
///

public class db
{
public db()
{
}
///
/// 创造一个数据库连接函数
/// ex:CreateConnetion()
///

/// 返回一个数据库连接对象

private static OleDbConnection CreateConnection()
{
string databasestr = System.Configuration.ConfigurationSettings.AppSettings["connstr"];
string constr;
constr
= "provider=Microsoft.Jet.OleDb.4.0;data source="
+ System.Web.HttpContext.Current.Server.MapPath(@databasestr);
OleDbConnection con
= new OleDbConnection(constr);
return con;
}

///
/// 构造一个通用的OleDbParameter
/// ex:PrepareCommand(new OleDbparameter("@me","你们好"),true,sqlstr,conn)
/// 数据库连接对象
/// sql操作字符串
/// 是否使用OleDbParameters的参数数据
/// OleDbParameters的参数娄组
/// 返回一个数据库操作对象

private static OleDbCommand PrepareCommand(OleDbConnection conn, string sqlstr, bool typed, OleDbParameter[] parm)
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
OleDbCommand com
= new OleDbCommand("", conn);

com.CommandText
= sqlstr;
if (typed)
{
foreach (OleDbParameter parmitem in parm)
{
com.Parameters.Add(parmitem);
}
}
return com;
}

///
/// 返回查询数据的第一行第一列
///

/// 同上
/// 同上
/// 同上
/// 同上
/// 返回一个object对象
public static object ExecuteScalar(string sqlstr, OleDbParameter[] parm)
{

OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, true, parm);
object show = com.ExecuteScalar();

conn.Close();
com.Parameters.Clear();
return show;
}

public static object ExecuteScalar(string sqlstr)
{

OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, false, null);
object show = com.ExecuteScalar();

conn.Close();
com.Parameters.Clear();
return show;
}

///
///

/// 同上
/// 同上
/// 同上
/// 同上
/// 返回受影响的行数
public static int ExecuteNonQuery(string sqlstr, OleDbParameter[] parm)
{
OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, true, parm);
int show = com.ExecuteNonQuery();

conn.Close();
com.Parameters.Clear();
return show;
}

public static int ExecuteNonQuery(string sqlstr)
{
OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, false, null);
int show = com.ExecuteNonQuery();

conn.Close();
com.Parameters.Clear();
return show;
}
///
/// 构造一个datareader的函数
///

/// 同上
/// 同上
/// 同上
/// 同上
/// 返回一个向前读的流的对象OleDbDataReader
public static OleDbDataReader ExecuteDataReader(string sqlstr, OleDbParameter[] parm)
{
OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, true, parm);
OleDbDataReader dr
= com.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}

public static OleDbDataReader ExecuteDataReader(string sqlstr)
{
OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, false, null);
OleDbDataReader dr
= com.ExecuteReader(CommandBehavior.CloseConnection);
com.Parameters.Clear();
return dr;
}

///
/// 构造一个dataview的函数
///

/// 同上
/// 同上
/// 同上
/// 返回一个dataview的对象
public static DataView ExecuteDataview(string sqlstr, OleDbParameter[] parm)
{

OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, true, parm);
OleDbDataAdapter pter
= new OleDbDataAdapter(com);
DataSet ds
= new DataSet();
pter.Fill(ds,
"datasource");
DataView dataShow
= ds.Tables["datasource"].DefaultView;
conn.Close();
com.Parameters.Clear();
return dataShow;

}

public static DataView ExecuteDataview(string sqlstr)
{

OleDbConnection conn
= CreateConnection();
OleDbCommand com
= PrepareCommand(conn, sqlstr, false, null);
OleDbDataAdapter pter
= new OleDbDataAdapter(com);
DataSet ds
= new DataSet();
pter.Fill(ds,
"datasource");
DataView dataShow
= ds.Tables["datasource"].DefaultView;
conn.Close();
com.Parameters.Clear();
return dataShow;

}
}

}
     在这个类当中都采用了静态成员方法,此时我就没有必要创建实例实现,直接为静态类成员,静态成员在访问的时候直接引用类名而不用对象名,此时你要注意,像this关键字就不可以访问静态成员,此时的成员可以作多个对象访问共享的数据,当类中没有和对象实例相关得成员,只有静态成员时,可以声明该类为静态类,静态类不可以用new创建对象,自然而然不可以编写构造函数
 静态类的声明如下代码:
访问修饰符   static  class  类名称
{
      静态类成员1;
      静态类成员2;
      静态类成员3;
}
 
最后注意:类中的常数声明和类型声明都默认为静态,即这个类默认为static无法被所属类对象访问的.
代码例子:
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CStatic
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(
"------类访问静态方法-------");
Console.WriteLine(
"今天的新闻的主角是:");
MyStatic.ShowName();
Console.WriteLine(
"------对象访问非静态方法-------");
MyStatic ms
= new MyStatic();
Console.WriteLine(
"因为他"+ms.Msg);
Console.ReadLine();
}
}
class MyStatic
{
public static string Name="类菌体"; //静态字段
public string Msg="在06年的时候考上北京航天航空大学,祝贺他!";//非静态字段
public static void ShowName()//静态的成员
{
Console.WriteLine(Name);
}
public void ShowMsg()//非静态的成员
{
Console.WriteLine(Msg);
}
}
}
 
编译结果:

ASP.NET