请问静态方法的优缺点分别是什么,一般用在什么地方。
比如:
public class Task
{
public static DataRow GetTaskByTaskID(string task_id)
{
string sql = string.Format(@"SELECT Project_NO,Task_ID,Task_Name,
convert(varchar(10),Exp_Start_Date,120) as ExpStartDate,
convert(varchar(10),Exp_Cmp_Date,120) as ExpCmpDate,
convert(varchar(10),Act_Cmp_Date,120) as ActCmpDate,
Duration,Resources,Remarks FROM Task
WHERE Task_ID='{0}'", task_id);
return DBHelper.Query(sql).Tables[0].Rows[0];
}
public static bool AddTask(Hashtable ht)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into Task(");
strSql.Append("Project_NO,Task_ID,Task_Name,Exp_Start_Date,Exp_Cmp_Date,Act_Cmp_Date,Duration,Remarks)");
strSql.Append(" values (");
strSql.Append("@Project_NO,@Task_ID,@Task_Name,@Exp_Start_Date,@Exp_Cmp_Date,@Act_Cmp_Date,@Duration,@Remarks)");
SqlParameter[] parameters = {
new SqlParameter("@Project_NO", SqlDbType.VarChar,50),
new SqlParameter("@Task_ID", SqlDbType.Int,4),
new SqlParameter("@Task_Name", SqlDbType.NVarChar,50),
new SqlParameter("@Exp_Start_Date", SqlDbType.DateTime),
new SqlParameter("@Exp_Cmp_Date", SqlDbType.DateTime),
new SqlParameter("@Act_Cmp_Date", SqlDbType.DateTime),
new SqlParameter("@Duration", SqlDbType.Int,4),
new SqlParameter("@Remarks", SqlDbType.NVarChar,512)};
parameters[0].Value = ht["Project_NO"];
parameters[1].Value = ht["Task_ID"];
parameters[2].Value = ht["Task_Name"];
parameters[3].Value = SetDBNullValue(ht["Exp_Start_Date"]);
parameters[4].Value = SetDBNullValue(ht["Exp_Cmp_Date"]);
parameters[5].Value = SetDBNullValue(ht["Act_Cmp_Date"]);
parameters[6].Value = SetDBNullValue(ht["Duration"]);
parameters[7].Value = SetDBNullValue(ht["Remarks"]);
return DBHelper.ExecuteSql(strSql.ToString(), parameters) > 0;
}
public static object SetDBNullValue(object value)
{
if (value.ToString() == "")
{
return DBNull.Value;
}
else
{
return value;
}
}
public static bool ModifyTask(string task_id, Hashtable ht)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update Task set ");
strSql.Append("Task_Name=@Task_Name,");
strSql.Append("Exp_Start_Date=@Exp_Start_Date,");
strSql.Append("Exp_Cmp_Date=@Exp_Cmp_Date,");
strSql.Append("Act_Cmp_Date=@Act_Cmp_Date,");
strSql.Append("Duration=@Duration,");
strSql.Append("Remarks=@Remarks");
strSql.Append(" where Task_ID=@Task_ID");
SqlParameter[] parameters = {
new SqlParameter("@Task_ID", SqlDbType.Int,4),
new SqlParameter("@Task_Name", SqlDbType.NVarChar,50),
new SqlParameter("@Exp_Start_Date", SqlDbType.DateTime),
new SqlParameter("@Exp_Cmp_Date", SqlDbType.DateTime),
new SqlParameter("@Act_Cmp_Date", SqlDbType.DateTime),
new SqlParameter("@Duration", SqlDbType.Int,4),
new SqlParameter("@Remarks", SqlDbType.NVarChar,512)};
parameters[0].Value = task_id;
parameters[1].Value = ht["Task_Name"];
parameters[2].Value = SetDBNullValue(ht["Exp_Start_Date"]);
parameters[3].Value = SetDBNullValue(ht["Exp_Cmp_Date"]);
parameters[4].Value = SetDBNullValue(ht["Act_Cmp_Date"]);
parameters[5].Value = SetDBNullValue(ht["Duration"]);
parameters[6].Value = SetDBNullValue(ht["Remarks"]);
int rows = DBHelper.ExecuteSql(strSql.ToString(), parameters);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
public static bool DeleteTask(string task_id)
{
string sql1 = string.Format(@"DELETE FROM Task WHERE Task_ID='{0}'", task_id);
string sql2 = string.Format(@"DELETE FROM Resource WHERE Task_ID='{0}'", task_id);
System.Collections.Generic.List<string> sqlstringlist = new System.Collections.Generic.List<string>();
sqlstringlist.Add(sql1);
sqlstringlist.Add(sql2);
return DBHelper.ExecuteSqlTran(sqlstringlist) > 0;
}
我为了在前面用这些方法方便,全部写成静态方法。请问这样写的缺点是什么?
相关推荐
C#静态方法与非静态方法实例分析
本文实例分析了C#静态方法与非静态方法,并对其用法进行了较为全面的分析。分享给大家供大家参考。具体分析如下: 通常来说,C#的类中可以包含两种方法:静态方法和非静态方法。 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用 类名.静态方法 的格式 。 1)static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用。 static内部只能出现static变量和其他static方法,而且static方法中还不能使用this等关键字,因
浅析C#中静态方法和非静态方法的区别
C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向大家介绍下C#中静态方法和非静态方法的区别,一起看看吧
c#静态方法和非静态方法详细介绍
C#的类中可以包含两种方法:静态方法和非静态方法。 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要 首先创建一个类的实例,而是采用类名.静态方法的格式 。1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!static内部只能出现static变量和其他static方法!而且static方法中还不能使用this….等关键字..因为它是 属于整个类! 2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。 3.静
通过反射调用静态方法
本例演示了如何使用反射,调用类的静态方法,封装了工具类ClsTool,统一实现静态方法的调用。使用反射,在特定场景下,能够很好的简化代码。例如mybatis
Java编程子类能否重写父类的静态方法探索
关于子类能否重写父类的静态方法,对像我这种初级的编程爱好者来说仍是值得讨论的一件事,下面我们通过具体实例,对此问题进行简单的探索。


.NET Framework
