Hace poco - muy recientemente - comencé a aprender a programar para iOS, y he quedado perplejo por lo que parece (para mí) ser una descuidada supervisión en SQLite3. Permítanme calificarlo diciendo que antes de la semana pasada tenía cero experiencia (práctica) con Macs, Objective C, Xcode, iOS o SQLite, así que no tengo ilusiones sobre el vals en el campo de las herramientas probadas y la búsqueda de errores obvios en mi primer intento Supongo que hay una buena explicación.Enlace de Parámetros de SQLite directamente por Nombre
Sin embargo, después de pasar los últimos meses usando SQL Server, MySQL y PostgreSQL, me sorprendió descubrir que SQLite no tiene una mejor funcionalidad para agregar parámetros por nombre. Todo lo que pude encontrar en línea (documentación, foros [incluido SO]) dice que asigne parámetros usando su índice entero, que parece que sería difícil mantenerlo si alguna vez modifica sus consultas. A pesar de que puede nombre de los parámetros en sus estados de cuenta y hacer algo como
sqlite3_bind_int(stmt, sqlite3_bind_parameter_index(stmt, "@my_param"), myInt);
nadie parece hacer eso tampoco. De hecho, nadie parece tratar de automatizar esto en absoluto; el único alternate approach que pude encontrar usó una matriz de parámetros y un contador de ciclos, e inspeccionó cada parámetro para determinar qué tipo de objeto insertar. Originalmente consideré un enfoque similar, pero a) la postura de mi jefe es que los parámetros de la base de datos siempre deben ser revisados (y estoy de acuerdo, aunque me doy cuenta de que los campos SQLite no están fuertemente tipados y técnicamente podría hacerlo de todos modos), b) se sentía como un truco poco elegante, yc) asumí que había una razón por la cual este enfoque no se usaba ampliamente. Entonces:
1) ¿Por qué no hay métodos de enlace en SQLite que acepten un nombre de parámetro (como, por ejemplo, un 'const char')? ¿O están allí y me falta algo?
2) ¿Por qué nadie parece utilizar un enfoque como el del ejemplo anterior?
Indagué un poco en el código fuente y pensé que podría modificar fácilmente la biblioteca o simplemente escribir mis propios métodos de clase (mecanografiados) que harían lo anterior para mí, pero supongo que hay una razón por la que nadie ha creado esto en SQLite todavía. Mi única conjetura es que la memoria adicional y los ciclos necesarios para encontrar el índice del parámetro son demasiado valiosos en un [insert iDevice aquí], y no vale la pena la conveniencia de poder usar nombres de parámetros. . . ?
Cualquier apreciación sería apreciada.
SQLite no ofrecer este: http://www.sqlite.org/lang_expr.html – Tim
Recurso útil - pero no sabe cómo se refiere a mi pregunta? – brichins
Para mí, es menos exigente mentalmente con los parámetros con nombre y, como dijo Tim, es compatible con SQLite. Los lenguajes como .NET hacen que los parámetros con nombre sean mucho más accesibles. – Echilon