Mixed-integer and 0-1 integer programming problems are NP-complete in the general case. You might as well use the backtracking approach which in my opinion is much more elegant.
One thing often missing from these types of solutions (this one included) is that it's extremely easy to generalize them beyond the 9x9 case.