【发布时间】:2012-12-17 04:50:29
【问题描述】:
只是想知道在使用这种形式的数据库命令/连接时是否存在任何典型问题。有什么“更好”的吗?任何其他可能帮助我提高我的 TSQL/C# 技能的东西都将不胜感激!谢谢!
private void Approval_Status(object sender, EventArgs e)
{
Button Approval = (Button)sender;
/*
* Boolean determining if the request was approved or denied
*/
Boolean Status = false;
if (ValidateApproval(Approval.Text.Trim().ToUpper()) == true)
{
SqlCommand cmd0 = new SqlCommand();
cmd0.Connection = db.con(user.Authority);
cmd0.CommandType = CommandType.Text;
cmd0.CommandText = "UPDATE [TBL_REQUEST] " +
"SET [TBL_REQUEST].[REQUEST_STATUS]=@Status, [TBL_REQUEST].[APPROVED_BY]=@Approver, " +
"[TBL_REQUEST].[DATE_APPROVED]=@Date, [TBL_REQUEST].[PRINTED_NAME]=@Name, " +
"[TBL_REQUEST].[TITLE]=@Title, [TBL_REQUEST].[PTO_USED]=@Used " +
"WHERE [TBL_REQUEST].[ID]=@ID; ";
if (Approval.Text.ToUpper() == codes.RequestApproved)
{
cmd0.Parameters.AddWithValue("@Status", SqlDbType.VarChar).Value = codes.RequestApproved;
Status = true ;
}
else
{
cmd0.Parameters.AddWithValue("@Status", SqlDbType.VarChar).Value = codes.RequestDenied;
Status = false;
}
cmd0.Parameters.AddWithValue("@Approver", SqlDbType.VarChar).Value = user.User;
cmd0.Parameters.AddWithValue("@Date", SqlDbType.Date).Value = DateTime.Today.ToShortDateString();
cmd0.Parameters.AddWithValue("@Name", SqlDbType.VarChar).Value = txtApproval.Text.Trim();
cmd0.Parameters.AddWithValue("@Title", SqlDbType.VarChar).Value = user.Title;
cmd0.Parameters.AddWithValue("@Used", SqlDbType.Float).Value = (float)nudUsed.Value;
cmd0.Parameters.AddWithValue("@ID", SqlDbType.VarChar).Value = txtID.Text.Trim();
/*
* Execute our non-query
*/
db.conEstablished.Open();
cmd0.ExecuteNonQuery();
db.conEstablished.Close();
/*
* Dispose our resources
*/
cmd0.Dispose();
ClearRequestsPanel();
/*
* Inform our user of a successful update
*/
if (Status == true)
{
MessageBox.Show(msg.RequestApproved);
}
else if (Status == false)
{
MessageBox.Show(msg.RequestDenied);
}
}
【问题讨论】:
-
什么是
db.con?using语句是语言的一部分——它不是函数。 -
使用此表单时的典型问题是忘记了
cmd0.Dispose()调用,using负责处理该调用。 :) -
@David:不仅忘记了,还没有把它放在
finally块中...... -
请记住
x == true => x。您无需将布尔表达式与true进行比较。 -
@IliaG 就我个人而言,我可以接受带有错误名称的布尔值,因为
if(Status)的读数比if (Status==true)略差一点,就我个人而言,我宁愿看到名称良好的布尔值,所以它读起来很好if(IsApproved)或if(Approved)
标签: c# sql-server tsql sqlconnection sqlcommand