最近接触了个采用存储过程的系统开发,感觉存储过程真的很好啊 哈哈,以前看了很长一段时间这方面的书,感觉真他妈的复杂,现在直接边看边自己亲手写,感觉效果好多了,更加的直观,深刻。
StoredProcedure 是在System.Data 下面
一:建立 SqlConnection 连接 ReturnCon
public static SqlConnection ReturnCon()
{
string strCon=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection con=new SqlConnection(strCon);
if(con.State.Equals(ConnectionState.Closed))
{
con.Open();
}
return con;
}
二:实现 cmd的方法(有多个重载)
public static SqlCommand Creatcmd(string procname,System.Data.SqlClient.SqlParameter[] prams,SqlConnection con)
{
SqlConnection Sqlcon=con;
if(Sqlcon.State.Equals(ConnectionState.Closed))
{
Sqlcon.Open();
}
SqlCommand cmd=new SqlCommand();
cmd.Connection=Sqlcon;
cmd.CommandText=procname;
cmd.CommandType=CommandType.StoredProcedure; //采用存储过程
if(prams!=null)
{
foreach(System.Data.SqlClient.SqlParameter paramenter in prams)
{
if(paramenter!=null)
{
cmd.Parameters.Add(paramenter);
}
}
}
return cmd;
}
三(1):实现SqlDataReader的多个重载方法引用上面的cmd(根据参数个数一一对应)
public static SqlDataReader RunProGetReader(string procname,System.Data.SqlClient.SqlParameter[] prams,SqlConnection con)
{
SqlCommand cmd=Creatcmd(procname,prams,con);
SqlDataReader sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
return sdr;
}
三(2)实现SqlDataAdapter的方法,返回DataTable类型引用上面的cmd
public static DataTable RunProcGetTable(string procname,System.Data.SqlClient.SqlParameter[] prams,SqlConnection con)
{
SqlCommand cmd=Creatcmd(procname,prams,con);
SqlDataAdapter sda=new SqlDataAdapter();
DataSet ds=new DataSet();
sda.SelectCommand=cmd;
sda.Fill(ds);
DataTable dt=ds.Tables[0];
con.Close();
return dt;
}
四(1)实现cmd的返回方法ExecuteNonQuery的多个重载引用上面的cmd(根据参数个数一一对应)
public static int RunExecute(string procname,System.Data.SqlClient.SqlParameter[] prams)
{
SqlConnection con=ReturnCon();
SqlCommand cmd=Creatcmd(procname,prams,con);
int intResult=Convert.ToInt32(cmd.ExecuteNonQuery());
con.Close();
return intResult;
}
四(2)实现cmd的返回方法ExecuteScalar的多个重载引用上面的cmd(根据参数个数一一对应)
public static int RunExecuteScalar(string procname,System.Data.SqlClient.SqlParameter[] prams)
{
SqlConnection con=ReturnCon();
SqlCommand cmd=Creatcmd(procname,prams,con);
int intResult=Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
return intResult;
}
====================================================================================
功能实现类举例--------用户类:
public class User
{
private int _userid;
private string _username;
public string _userpwd;
public int UserId //公共属性,只读
{
get{return this._userid;}
}
public string UserName //公共属性,只读
{
get {return this._username;}
set{this._username=value;}
}
public string UserPwd
{
get{return this._userpwd;}
set{this._userpwd=value;}
}
public User()
{
}
public User(string UserName,string UserPwd)
{
this._username=UserName;
this._userpwd=UserPwd;
}
public User(SqlDataReader sdr)
{
this._userid=Convert.ToInt32(sdr["UserId"]);
this._username=sdr["UserName"].ToString();
this._userpwd=sdr["UserPwd"].ToString();
}
public static bool AddUser(User singleUser)
{
bool Flag = false;
string procname="AddUser";
System.Data.SqlClient.SqlParameter[] prams={
new SqlParameter("@UserName",System.Data.SqlDbType.VarChar,50),
new SqlParameter("@UserPwd",System.Data.SqlDbType.VarChar,50)
};
prams[0].Value=singleUser._username;
prams[1].Value=singleUser._userpwd;
int intResult=DataBase.RunExecute(procname,prams);
if(intResult>0)
{
Flag = true;
}
return Flag;
}
public static bool DeleteUser(int UserId)
{
bool Flag = false;
string procname="DeleteUser";
System.Data.SqlClient.SqlParameter[] prams={new SqlParameter("@UserId",System.Data.SqlDbType.Int)};
prams[0].Value=UserId;
int intResult=DataBase.RunExecute(procname,prams);
if(intResult>0)
{
Flag = true;
}
return Flag;
}
public static bool UpdateUser(User singleUser)
{
bool Flag = false;
string procname="UpdateUser";
SqlParameter[] prams={new SqlParameter("@UserId",System.Data.SqlDbType.Int),
new SqlParameter("@UserName",System.Data.SqlDbType.VarChar,50),
new SqlParameter("@UserPwd",System.Data.SqlDbType.VarChar,50)
};
prams[0].Value=singleUser._userid;
int intResult=DataBase.RunExecute(procname,prams);
if(intResult>0)
{
Flag = true;
}
return Flag;
}
public static bool ChangePwd(int UserId,string UserPwd)
{
bool Flag = false;
string procname="ChangePwd";
SqlParameter[] prams={new SqlParameter("@UserId",System.Data.SqlDbType.Int),
new SqlParameter("@UserPwd",System.Data.SqlDbType.VarChar,50)
};
prams[0].Value=UserId;
int intResult=DataBase.RunExecute(procname,prams);
if(intResult>0)
{
Flag = true;
}
return Flag;
}
public static User GetUserByUserId(int UserId)
{
User singleUser = null;
string procname = "GetUserByUserId";
SqlParameter[] prams={new SqlParameter("procname",System.Data.SqlDbType.Int)};
prams[0].Value=UserId;
SqlDataReader sdr = DataBase.RunProGetReader(procname,prams);
while(sdr.Read())
{
singleUser = new User(sdr);
}
sdr.Close();
return singleUser;
}
功能实现类举例--------新闻类
功能实现类举例--------模块类
.....
.....
.....