asp.net教程:asp.net中静态的类和成员函数都是静态的
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 16:21:16 ASP.NET
asp.net教程:asp.net中静态的类和成员函数都是静态的ASP.NET
【51Test.NET-asp教程:asp中静态的类和成员函数都是静态的】:
ASP.NET
我们了解一下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