一切正常,一件事无效的是,即使没有为该帐户创建/找到任何帐户,也会为每个帐户记笔记。
for (int j = 0; j < accounts.Length; j++)
{
SqlConnection connection = new SqlConnection(SqlDataSource1.ConnectionString);
SqlCommand SqlComm = new SqlCommand("insert into TableHistory (id, startDate, dueDate, userid, amount, number, needsReview, offer, dateAdded, dateRejected, rejectedBy) " +
"select (select max(id) + 1 from Table1), startDate, dueDate, userid, amount, number, needsReview, offer, dateAdded, GETDATE(), @userID from Table1 where number = @number " +
"delete from Table1 where number = @number", connection);
SqlComm.Parameters.Add("@number", SqlDbType.Int).Value = Convert.ToInt32(accounts[j].ToString());
SqlComm.Parameters.Add("@userID", SqlDbType.Int).Value = userID;
connection.Open();
SqlComm.ExecuteNonQuery();
connection.Close();
NoteAccount note = new NoteAccount("Personal Note", accounts[j].ToString(), userID);
note.makeNote();
}
假设帐户11在Table1
中没有任何内容。什么都不会失败,因为insert语句不会触发,因为select语句没有从Table1
返回任何内容,这没关系。
但note.makeNote();
会触发并在不需要添加时为帐户添加“个人”备注。如果Table1
中存在该帐户,是否只有一种简单的方法可以添加备注?
答案 0 :(得分:3)
ExecuteNonQuery
会返回受影响的行数,因此您可以根据该行进行检查。如果大于0则记下笔记。
if(SqlComm.ExecuteNonQuery()>0)
{
NoteAccount note = new NoteAccount("Personal Note", accounts[j].ToString(), userID);
note.makeNote();
}
答案 1 :(得分:2)
如果我理解正确,我认为您可以使用ExecuteNonQuery
的返回结果。这将返回受查询影响的行数,因此您可以测试它是否大于0,并且只有它是一个注释。