ajax+一般处理程序+工厂模式来实现对sql数据库增删改。
可行吗?
ProcessRequest这里接受的变量,在工厂模式那些类里怎么调用。
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string leiXing=context.Request.QueryString["leiXing"];
string name = context.Request.QueryString["name"];
string id=context.Request.QueryString["id"];
string phone=context.Request.QueryString["phone"];
string years=context.Request.QueryString["years"];
//链接数据库
SqlConnection sqlcon = new SqlConnection("Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=zengShanGai;Data Source=.");
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlcon;
sqlcmd.CommandType = CommandType.Text;
if(leiXing=="onLoad")
{
}
else if(leiXing=="add")
{
sqlcmd.CommandText = "insert into info(name,phone,years) values('" + name + "','" + phone + "'," + int.Parse(years) + ")";
sqlcmd.ExecuteNonQuery();
}
else if(leiXing == "delete")
{
sqlcmd.CommandText = "delete from info where id=" + int.Parse(id);
sqlcmd.ExecuteNonQuery();
}
else if (leiXing == "change")
{
sqlcmd.CommandText = "update info set name='" + name + "',phone='" + phone + "',years=" + int.Parse(years) + "where id=" + int.Parse(id);
sqlcmd.ExecuteNonQuery();
}
string strcmd = "select * from info";
SqlDataAdapter sqldat = new SqlDataAdapter(strcmd, sqlcon);
DataSet sqldas = new DataSet();
sqldat.Fill(sqldas);
StringBuilder sb = new StringBuilder();
sb.Append("[");
for (int i = 0; i < sqldas.Tables[0].Rows.Count; i++)
{
sb.Append("{'id':" + sqldas.Tables[0].Rows[i]["id"] + ",'name':'" + sqldas.Tables[0].Rows[i]["name"] + "','phone':'" + sqldas.Tables[0].Rows[i]["phone"] + "','years':" + sqldas.Tables[0].Rows[i]["years"] + "},");
}
sb.Append("]");
context.Response.Write(sb);
sqlcon.Close();
}
public bool IsReusable
{
get
{
return false;
}
}
}
//抽象工厂
public abstract class Creator
{
public abstract Sql CreateSql();
}
//具体工厂 增加操作的创建者
public class SqlAddCreator : Creator
{
public override Sql CreateSql()
{
return new ConcreteSqlAdd();
}
}
//具体工厂 删除操作创建者
public class SqlDelCreator : Creator
{
public override Sql CreateSql()
{
return new ConcreteSqlDel();
}
}
//具体工厂 修改操作创建者
public class SqlUpdCreator : Creator
{
public override Sql CreateSql()
{
return new ConcreteSqlUpd();
}
}
//抽象操作
public abstract class Sql
{
public abstract void Opration();
}
//具体操作 增加
public class ConcreteSqlAdd : Sql
{
public override void Opration()
{
SqlConnection sqlcon = new SqlConnection("Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=zengShanGai;Data Source=.");
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlcon;
sqlcmd.CommandType = CommandType.Text;
sqlcmd.CommandText = "insert into info(name,phone,years) values('" + name + "','" + phone + "'," + int.Parse(years) + ")";
sqlcmd.ExecuteNonQuery();
}
}
//具体操作 删除
public class ConcreteSqlDel : Sql
{
public override void Opration()
{
throw new NotImplementedException();
}
}
//具体操作 修改
public class ConcreteSqlUpd : Sql
{
public override void Opration()
{
throw new NotImplementedException();
}
}