建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > asp.net教程 >

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

时间:2011-04-12 10:02来源: 作者: 点击:
  我们了解一下asp.net中静态类和成员函数,正如标题所说,他们都是静态的,看看作者是如何解析的吧。   为什么标题说都是静态的呢?因为他们都是有static修饰符作用下的,由static所修饰的类或者成员都是静态类或者静态成员,其实我也比较喜欢使用静态类和
  我们了解一下asp.net中静态类和成员函数,正如标题所说,他们都是静态的,看看作者是如何解析的吧。
  为什么标题说都是静态的呢?因为他们都是有static修饰符作用下的,由static所修饰的类或者成员都是静态类或者静态成员,其实我也比较喜欢使用静态类和静态方法了,给大伙看下这个静态的类和静态的成员函数,怀旧下单层封装思想,呵呵..
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Web;
using System.Data.OleDb;
using System.Data;

namespace Sophie
{
/// <summary>
/// db 的摘要说明。
/// </summary>
public class db
{
public db()
{
}
/// <summary>
/// 创造一个数据库连接函数
/// ex:CreateConnetion()
/// </summary>
/// <returns>返回一个数据库连接对象</returns>

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;
}

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

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;
}

/// <summary>
/// 返回查询数据的第一行第一列
/// </summary>
/// <param name="conn">同上</param>
/// <param name="sqlstr">同上</param>
/// <param name="typed">同上</param>
/// <param name="parm">同上</param>
/// <returns>返回一个object对象</returns>
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;
}

/// <summary>
/// </summary>
/// <param name="conn">同上</param>
/// <param name="sqlstr">同上</param>
/// <param name="typed">同上</param>
/// <param name="parm">同上</param>
/// <returns>返回受影响的行数</returns>
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;
}
/// <summary>
/// 构造一个datareader的函数
/// </summary>
/// <param name="conn">同上</param>
/// <param name="sqlstr">同上</param>
/// <param name="typed">同上</param>
/// <param name="parm">同上</param>
/// <returns>返回一个向前读的流的对象OleDbDataReader</returns>
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;
}

/// <summary>
/// 构造一个dataview的函数
/// </summary>
/// <param name="sqlstr">同上</param>
/// <param name="typed">同上</param>
/// <param name="parm">同上</param>
/// <returns>返回一个dataview的对象</returns>
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);
}
}
}
 
编译结果:
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片