用于循环错误检查

时间:2013-04-24 21:55:44

标签: c# asp.net

一切正常,一件事无效的是,即使没有为该帐户创建/找到任何帐户,也会为每个帐户记笔记。

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中存在该帐户,是否只有一种简单的方法可以添加备注?

2 个答案:

答案 0 :(得分:3)

ExecuteNonQuery会返回受影响的行数,因此您可以根据该行进行检查。如果大于0则记下笔记。

if(SqlComm.ExecuteNonQuery()>0)
{
   NoteAccount note = new NoteAccount("Personal Note", accounts[j].ToString(), userID);
   note.makeNote();
}

答案 1 :(得分:2)

如果我理解正确,我认为您可以使用ExecuteNonQuery的返回结果。这将返回受查询影响的行数,因此您可以测试它是否大于0,并且只有它是一个注释。