日期:2014-05-19  浏览次数:20739 次

菜鸟询问MVC中数据库层问题,高手来~~
假设我要输入用户的名字和密码,来更新数据库。这么写:(C/S)
这个是放在一个方法里面,节约时间就没写。。
SqlConnection   conn   =   new   SqlConnection( "省略 ");
SqlCommand   insertcmd   =   new   SlqCommand( "ProcedureName ",Conn);//ProcedureName     是插入的存储过程名
insertcmd   .CommandType   =   CommandType.StoredProcedure;
insertcmd   .Parameters.Add(...省略).Value   =   @CustomerName;
insertcmd   .Parameters.Add(...省略).Value   =   @CustomerPassWord;
insertcmd   .ExecuteNonQuery();


这么一来就把数据插入到数据库中,但是我觉得这样似乎没能体现面向对象的思想,如果下次我要再写个东西的话,比如是要写用户的电话,用户的家庭地址,那么上面那些参数的输入等都要重写,也就是说这个方法我又要再写一个。。怎么样写才能写的全面点呢?希望高手解决下,或是给个有详细说明的网站地址,谢谢!

------解决方案--------------------
========== 写一个 通用的 数据库操作类======================
namespace Utilities
{

/// <summary>
/// DbAccess类,即进行数据库访问时需要调用的类
/// </summary>
public class DbaseBS
{
//取出数据库连接字符串
public static readonly string conStr = ConfigurationSettings.AppSettings[ "ConnectionString "];

/// <summary>
/// 得到数据库连接对象
/// </summary>
/// <returns> 数据库连接对象 </returns>
public static SqlConnection GetConObject()
{
return new SqlConnection(conStr);
}

/// <summary>
/// 执行操作数据库的存储过程
/// </summary>
/// <param name= "procName "> 存储过程名称 </param>
/// <returns> 存储过程执行后所影响的行数 </returns>
public static int ExecuteNonQuery(string procName)
{
SqlCommand cmd = new SqlCommand();

using (SqlConnection con = GetConObject())
{
CreateCommand(cmd, con, null, procName,null);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();
return val;
}
}

/// <summary>
/// 执行操作数据库的存储过程
/// </summary>
/// <param name= "procName "> 存储过程名称 </param>
/// <param name= "cmdParms "> 存储过程所使用的参数 </param>
/// <returns> 存储过程执行后所影响的行数 </returns>
public static int ExecuteNonQuery(string procName, SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();

using (SqlConnection con = GetConObject())
{
CreateCommand(cmd, con, null, procName, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();
return val;
}
}

/// <summary>
/// 执行操作数据库的存储过程(事务控制)
/// </summary>
/// <param name= "trans "> 数据库连接所关联的事务对象 </param>
/// <param name= "procName "> 存储过程名称 </param>
/// <param name= "cmdParms "> 存储过程所使用的参数 </param>
/// <returns> 存储过程执行后所影响的行数 </returns>
public static int ExecuteNonQuery(SqlTransaction trans, string procName, SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
CreateCommand(cmd, trans.Connection, trans, procName, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();
return val;
}

/// <summary>
/// 执行读数据集操作,以DataReader的形式返回
/// </summary>
/// <param name= "procName "> 存储过程名称 </param>
/// <param name= "cmdParms "> 存储过程所使用的参数 </param>
/// <returns> DataReader对象 <