麻烦前辈帮我解释一段代码
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的解释一直看不懂;
----------------------