A dc motor will NEVER have the same speed on two consecutive runs depending on a myriad of factors like voltage, load, temperature, which mood it is in, etc.
That means that if you run the motor two times an exact identical amount of time the motor will rotate a different distance. And it also means that the more times you run it the more the position will differ from the desired one. Running a motor a specified amount of time is fine for a cement mixer, not for reaching a specified position. if you want to achieve a position you will have to provide some means for feedback like encoders or limit switches.
Another option would be using a rc servo which can be easily controlled from the arduino using the servo library. You are saying that you need to rotate 90-120 degrees so this might be the solution for you. In that case you do not need any additional hardware since the servo can be controlled directly from the arduino. You just select and buy a servo that provides you with the amount of torque and speed needed.
A third option would be using a stepper motor with an appropriate driver. This thread will give you some info.
The way you are expressing yourself makes me wonder if you have achieved the necessary amount of knowledge and understanding:
sir L293D can handle a more current because i think if the DC motor stop in a specific point it will store a current inside in the L293D.
This is as wrong as it can be. A IC like a L293 can NEVER store electrical energy as current. The only component capable of that is an inductor. If you exceed the current rating by selection error and/or overloading/stalling the motor you will damage the IC and possibly the motor as well. Not that i want to discourage you but be prepared to encounter problems and be prepared to do quite an amount of learning to overcome them