现在这是我更新记录的代码。
数据访问:
public int UpdateBatch(FillinEntity fin)
{
int result = 0;
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand dCmd = new SqlCommand("UpdatebyBatch", conn))
{
dCmd.CommandType = CommandType.StoredProcedure;
try
{
dCmd.Parameters.AddWithValue("@Batch", fin.Batch);
dCmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Now.ToString();
dCmd.Parameters.AddWithValue("@User", fin.ModifiedBy);
result = Convert.ToInt32(dCmd.ExecuteScalar());
return result;
}
catch (SqlException ee)
{
throw ee;
}
finally
{
if (conn.State == ConnectionState.Open) conn.Close();
}
}
}
}
商业逻辑:
public int UpdateBatch(FillinEntity fin)
{
DAL pDAL = new DAL();
try
{
return pDAL.UpdateBatch(fin);
}
catch
{
throw;
}
finally
{
pDAL = null;
}
}
UI:
FillinEntity fin = new FillinEntity();
BAL pBAL = new BAL();
try
{
fin.Batch = txtBACTHCODE.Text.Trim();
fin.ModifiedBy = lblUser.Text;
int result = pBAL.UpdateBatch(fin);
if (result > 0)
{
MessageBox.Show("Make Sure Batch is All Kitted!");
}
else
{
MessageBox.Show("Record Updated Successfully.");
}
SQL:
UPDATE dbo.FG_FILLIN SET
Status='SHIPPED'
,DateModified=@Date
,ModifiedBy=@User
WHERE Batch = @Batch and (Status='KITTED')
我的问题是它总是返回0结果所以我的消息框总是提示成功甚至我的状态都没有被打开。
谢谢你!
答案 0 :(得分:2)
您的存储过程未返回ExecuteScalar
可以使用的值。您可以使用ExecuteNonQuery method来返回受影响记录的数量。
result = dCmd.ExecuteNonQuery();
答案 1 :(得分:1)
为了让ExecuteScalar返回一个值,你必须返回一个值。您可以将SQL修改为如下所示:
UPDATE dbo.FG_FILLIN SET
Status='SHIPPED'
,DateModified=@Date
,ModifiedBy=@User
WHERE Batch = @Batch and (Status='KITTED')
SELECT @@ROWCOUNT
或者您可以使用ExecuteNonQuery方法。