I've used only the C API and CLI in the past and am trying to use the Tcl API now and am a bit confused about the concept of reusing prepared statements in Tcl API. In the documentation, the form of eval is: dbcmd eval ?options? sql ?array-name? ?script? The only option I saw was -withoutnulls. If there are others, would you please tell me where their documentation can be located? Regarding the caching of prepared statements, how is a prepared statement reset and new values of arguments/parameters bound? I understand that regular Tcl substitution will handle the binding but I don't understand how using eval again will reuse a query previously run using eval as opposed to just creating a new one altogether; because eval sort of does it all--prepares, binds(or already bound by Tcl substitution before passed to the command), executes, and steps. Also, is there any reason to use the TDBC extension? I was reading over NadKarni's book on Tcl and see that in TDBC the prepared statement appears to be stored in a variable, if there are variable parameters then they are passed at execution of the statement which is coded explicitly. Other than perhaps that, I don't see what it adds over the methods documented on the SQLite Tcl API documentation. Thank you.