麻烦前辈帮我解释一段代码
using   System.Data; 
 using   System.Data.SqlClient;     
 public   class   OnlineDiary 
 { 
 	const   string   conString   =    "Data   Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\DiaryDB.mdf;Integrated   Security=True;User   Instance=True ";     
 	public   static   int   GetDiaryIdFromUserName(string   UserName) 
 	{ 
 		int   DiaryId; 
 		SqlConnection   diaryDBConn   =   new   SqlConnection(conString); 
 		string   sqlString   =    "GetDiaryIdFromUserName "; 
                               // "GetDiaryIdFromUserName "不是sql语句吧,用在这做什么? 
 		SqlCommand   sqlCmd   =   new   SqlCommand(sqlString,   diaryDBConn); 
 //接上,其他教程中,sqlString都是非常正规的SQL语句,比如“select 
 *   from   表名”,如果是这样,那这句很好理解,表示要进行select 
 *   from   表名操作,但现在sqlString   =    "GetDiaryIdFromUserName ",又表示进行什么操作?   
 		try   {   
 			sqlCmd.CommandType   =   CommandType.StoredProcedure; 
 			sqlCmd.Parameters.AddWithValue( "@UserName ",   UserName);    
 //Parameters属性(不知道能不能说属性)能做什么?最好形象点,MSDN的解释一直看不懂;AddWithValue( "@UserName ",   UserName)作用又是什么,我以为是没加这句它全部检索,加了只检索出数据表中列UserName中,符合UserName的项,不知道是否错误?   
 			diaryDBConn.Open(); 
 			SqlDataReader   diarySQLDR   =   sqlCmd.ExecuteReader(CommandBehavior.CloseConnection); 
 //这句又干什么用?我的理解是关闭diarySQLDR时候自动关闭diaryDBConn,不知道有没错?如果是这样,感觉挺没用的。	 
 		sqlCmd   =   null; 
 			if   (diarySQLDR.Read()) 
 			{ 
 				DiaryId   =   (int)diarySQLDR( "DiaryId "); 
 			} 
 //这个我理解是遍历数据表,找出列UserName中,值为UserName的,进行相应的赋值。因为UserName的值是唯一的,所以diarySQLDR.Read()只有一次为真。不知道错了没? 
 			else 
 			{ 
 				DiaryId   =   -1; 
 			}   
 			diarySQLDR.Close(); 
 			diarySQLDR   =   null; 
 		}     
 		catch   (Exception   ex)   { 
 			DiaryId   =   -1; 
 		} 
 		finally   { 
 			diaryDBConn.Close(); 
 			diaryDBConn   =   null; 
 		}   
 		return   DiaryId; 
 	}   
 	public   static   void   InsertDiary(string   UserName,   string   FirstName,   string   LastName) 
 	{ 
 		SqlConnection   diaryDBConn   =   new   SqlConnection(conString); 
 		string   sqlString   =    "InsertDiary "; 
 //同上,也是InsertDiary非正规SQL语句问题。 
 		SqlCommand   sqlCmd   =   new   SqlCommand(sqlString,   diaryDBConn); 
 		sqlCmd.CommandType   =   CommandType.StoredProcedure;   
 		sqlCmd.Parameters.AddWithValue( "@UserName ",   UserName); 
 		sqlCmd.Parameters.AddWithValue( "@FirstName ",   FirstName); 
 		sqlCmd.Parameters.AddWithValue( "@LastName ",   LastName); 
 //同上,属性Parameters作用的形象描述。 
 		diaryDBConn.Open(); 
 		sqlCmd.ExecuteNonQuery(); 
 		diaryDBConn.Close(); 
 		sqlCmd   =   null; 
 		diaryDBConn   =   null;   
 	}   
 }
------解决方案--------------------string sqlString =  "GetDiaryIdFromUserName "; // "GetDiaryIdFromUserName "不是sql语句吧,用在这做什么? 
 ------------------------------------------------------ 
 他这是存储过和名,在这就是声明一下,后面好调用!     
 sqlCmd.Parameters.AddWithValue( "@UserName ", UserName);//Parameters属性(不知道能不能说属性)能做什么?最好形象点,MSDN的解释一直看不懂; 
 ----------------------